DENVER -- Adam LaRoche provided the early offense and Dan Haren took care of the rest.
Chad Qualls allowed a run in the ninth before striking out Jason Giambi with the tying run on first for his fifth save in seven chances.
Carlos Gonzalez homered and drove in two runs for the Rockies, who are quickly running out of starting pitchers. Jason Hammel left the game after three innings with a right groin strain, a day after Jorge De La Rosa was pulled from his start with a bruised middle finger.
"It happened on the last pitch of the third inning but the pitch before that I could feel it tightening up," Hammel said. "Then it popped on the last pitch. It doesn't feel too bad. I don't want to go on the DL."
De La Rosa will most likely land on the disabled list. Manager Jim Tracy said after the game the left-hander has a torn flexor tendon band on his finger and will probably miss more than one start.
"We're not involved in a surgical situation," Tracy said. "I would be remiss if I told you it was only going to be [one start]. I think it's going to be a little bit longer than that."
While the Rockies were dealing with a depleted staff, Haren (3-1) was controlling their bats. He gave up five hits and walked two in eight innings and was in control all night. He retired 15 of 16 batters in one stretch, and after Ian Stewart's one-out single in the second he didn't allow a hit until Eric Young Jr. drove a pinch-hit double into right field with one out in the eighth.
"My stuff was pretty good all night and I had the lead all night which allowed me to be aggressive," Haren said. "I had a couple of leadoff walks, but was able to pitch around them."
Haren has been using the strikeout to get himself out of trouble. In his last four starts he has averaged just over 8 strikeouts.
"The strikeouts have come in bunches," he said. "I haven't felt that great in any particular outing this year, but it seems the strikeouts are always in there. It tells me that my stuff is just fine."
Haren got all the support he needed in the first inning when the Diamondbacks jumped on Hammel (0-2). With two outs, Justin Upton walked, Mark Reynolds singled and LaRoche homered into the Rockies bullpen to give Arizona a 3-0 lead.
"I don't know if he was trying to go in or out," LaRoche said. "He missed with his spot and gave me a pitch in. He had thrown me a good changeup and he left a pitch up."
Gonzalez got a run back when he led off the bottom of the first with his second home run of the season. He was the only Rockies batter to get two hits off Haren.
"He was changing the speed with his split and his slider," Gonzalez said. "On a 2-2 count he threw me a curveball middle in and that's the one I hit out."
The Diamondbacks padded their lead in the second. Kelly Johnson knocked in Chris Snyder with a sacrifice fly, and after Stephen Drew doubled Upton drove him in with a single to center to make it 5-1.
"We took advantage of Hammel being a little erratic," Arizona manager A.J. Hinch said.
Colorado pulled to within 5-2 in the eight when Gonzalez knocked in Young with a single to center.
The Rockies had a chance to win it in the ninth off Qualls. Todd Helton led off with a walk, and after two strikeouts Miguel Olivo and Stewart hit consecutive singles to make it 5-3. Giambi pinch-hit but couldn't come through with a hit that could have tied it or won it.
Former Rockies All-Star Dante Bichette was honored before the game on the 15th anniversary of the first game played at Coors Field. Bichette won the game with a three-run homer in the bottom of the 14th inning on April 26, 1995. He threw out the ceremonial first pitch to former teammate Larry Walker. ... Gonzalez has homered to lead off a game three times in his career. ... Diamondbacks OF Gerardo Parra did not play because of a swollen middle finger on his right hand. He was hit by a foul tip in Sunday's game. ... Because of the rainout against Florida on Friday, Rockies LHP Greg Smith will start Wednesday's game on three days' rest.