Stephen Drew homered and had four RBIs, Kelly Johnson hit a two-run shot and the Arizona Diamondbacks held off Colorado 10-9 Thursday night to complete a three-game sweep of the fading Rockies.

Colorado had won 13 of 15 in another late-season run to get close in the NL West, but leaves the desert 3½ games behind San Francisco in the division and Atlanta in the wild-card race.

Jeff Francis (4-6) struggled in his second start off the disabled list and the Rockies got little production from Troy Tulowitzki to go home on a debilitating four-game losing streak.

Carlos Gonzalez hit his first career grand slam in the seventh inning and added a two-run single in Colorado's three-run ninth, but the Rockies couldn't come all the way back.

Tulowitzki, having a huge September, went 2 for 12 in the series. His only RBI came in the ninth — after a long foul ball — on a groundout with runners at second and third and one out. That cut Arizona's lead to 10-9, but Juan Gutierrez struck out pinch-hitter Melvin Mora with two on to end it.

Drew had a two-run triple in Arizona's four-run fifth and added a solo homer off Joe Beimel in the seventh after Gonzalez's slam. Chris Young also hit a solo homer, in the eighth off Octavio Dotel.

D.J. Carrasco (3-2) got the win after an early exit by starter Ian Kennedy. Gutierrez got through a rough ninth inning for his 12th save.

The Rockies headed into the desert hoping to build some momentum against the last-place Diamondbacks with a pivotal home series against the Giants at Coors Field coming up next.

They leave with a huge hole to dig out of.

Colorado lost the opener 3-1 after a decent start by Jorge De La Rosa, but ace Ubaldo Jimenez couldn't come through in Wednesday's 8-4 loss.

Neither could Francis.

The left-hander threw plenty of pitches in the first two innings and one bad one in the third to Johnson, who hit it off the wall behind the concourse in center field for a two-run shot that put the Diamondbacks up 2-1.

Drew added a run-scoring single in the fourth and Francis was done a batter later after allowing three runs on six hits in 3 2-3 innings.

Kennedy wasn't exactly efficient.

The right-hander struggled with control — 63 pitches through the first three innings — and repeatedly stepped off the mound, unable to agree with catcher John Hester on what to throw. Kennedy lasted just four innings, giving up a run on Ryan Spilborghs' RBI single in the third and three hits.

Arizona went up 7-2 with four runs off Esmil Rogers in the fifth inning on Drew's two-run triple, Cole Gillespie's RBI single and a throwing error by second baseman Jonathan Herrera.

Gonzalez hit his 33rd homer off Blaine Boyer in the seventh after Esmerling Vasquez walked the bases loaded to cut the lead to two, but Drew hit a solo homer in the bottom half and Young added one in the eighth to push the lead back to four.

Notes: Rockies 2B Eric Young Jr. walked as a pinch hitter in the ninth after missing two games with a sore right shin, the same one he broke earlier in the season. ... Arizona went 7-2 against Colorado at Chase Field this season. The teams split the season series 9-all.