Left-hander Wade Miley continued his career dominance of the Rockies, taking a shutout into the seventh inning on his way to a 9-2 win.
Miley (10-10) is 6-0 in his career against the Rockies.
"Same mentality I take against anybody else," Miley said of his success against the Rockies. "Just go out and try to keep us in the game. That's when things go bad, when you start thinking about stuff like that."
Gerardo Parra doubled twice and drove in three runs, Aaron Hill had three hits and three RBIs, and Miguel Montero had three hits and scored twice on his bobblehead night, helping Miley get his first win since Aug. 6.
Miley limited Colorado to two runs and six hits over 6 1-3 innings, aiding his cause with a run-scoring double in the sixth. The Rockies got consecutive one-out hits from Wilin Rosario, Todd Helton and Nolan Arenado to cut Arizona's lead to 4-2 in the seventh and chase Miley.
"A couple of times he got behind in the count, but he was able to come back and put them away," Montero said of Miley. "His changeup was working pretty good and his breaking ball was like always."
Hill had a solo homer and Paul Goldschmidt tripled and scored on Martin Prado's sacrifice fly in the bottom of the inning to restore the Diamondbacks' four-run lead.
Roy Oswalt (0-6) gave up two runs and seven hits in 4 2-3 innings for Colorado in his first start since coming off the disabled list with a hamstring strain on Sept. 6.
Parra's one-out double to center field in the second inning drove in Montero and Matt Davidson to give the Diamondbacks a 2-0 lead.
Arizona had runners at first and second in the fourth, but Parra lined back to Oswalt, who doubled off Montero at second base.
Oswalt kept his team in the game but left after issuing a walk to Goldschmidt in the fifth. He complained to home plate umpire Manny Gonzalez after the walk, apparently unhappy with not getting a call on a previous pitch.
"Got a little bit of the velocity back and the pitch command was pretty well," Oswalt said. "I still don't have a 100 percent of my legs. I backed off a bit in the second trying to throw some balls down in the zone."
Rob Scahill came on in relief and got the last out of the inning, retiring Prado on a popup. However, the Diamondbacks scored twice off Scahill in the sixth and twice off Mitchell Boggs in the seventh.
The Diamondbacks scored three runs in the eighth inning against Jeff Francis. Adam Eaton doubled in a run and Hill added a two-run single.
Arizona relievers Josh Collmenter, David Hernandez and Heath Bell held the Rockies scoreless for the final 2 2-3 innings.
"We did good with guys in scoring position, we did scoring damage tonight, as we should do," Diamondbacks manager Kirk Gibson said. "I think Wade's confident every day he goes out there. It looked like he had pretty good movement on his ball."
The Diamondbacks celebrated Hispanic Heritage Night on Saturday, and their typical Saturday home black jerseys said "Los Dbacks" on the front. ... Hill made the defensive play of the game, throwing out Helton after going deep in the hole up the middle and making an off-balance throw to first base in the second inning. ... With his single in the top of the first, Rockies second baseman D.J. LeMahieu extended his hitting streak to 14 games.