Jorge De La Rosa threw six solid innings, Chris Iannetta and Clint Barmes homered and the Rockies hurt the Diamondbacks' hopes for the NL West title with a 3-2 victory.
The loss ended the Diamondbacks' four-game winning streak. Arizona remained 3½ games behind Los Angeles in the NL West as the first-place Dodgers lost 7-1 to San Francisco.
"We have to win every game," Arizona manager Bob Melvin said. "That has to be our mind-set. When we lose a game, it's difficult, but we've got to put it past us."
Three weeks ago the Diamondbacks had a 4½-game lead in the division, but lost 11 of 14 before sweeping the Giants at home earlier this week. Arizona had held at least a share of the NL West lead from April 6 through Sept. 6.
The Rockies, who swept the Diamondbacks in the NL Championship series last year, are reduced to a spoiler role this season.
"Obviously we'd like to be in a little better situation and have these games mean a lot more," Barmes said. "I don't think anyone here's going to show up and go through the motions. We're going to try to win and finish the season strong."
Garrett Atkins had three hits for the Rockies. Adam Dunn homered and had two hits, and Mark Reynolds homered for Arizona.
Trailing 3-1 entering the ninth, Arizona rallied against Colorado closer Brian Fuentes. Reynolds hit his 28th home run with one out, Chris Snyder singled and David Eckstein was hit by a pitch. Pinch-hitter Tony Clark struck out and Stephen Drew walked to load the bases. Fuentes struck out Chris Young for his 29th save in 33 chances.
"I was struggling for command and I think they knew it," Fuentes said. "I was trying to throw strikes and not leave it over the plate."
The Diamondbacks had other chances to get their fifth straight win. They loaded the bases in the fourth and didn't score, and in the eighth Young led off with a single but was doubled off first when Atkins snared Conor Jackson's line drive down the line.
"If the ball gets through it's second and third with Dunn coming up," Jackson said. "It was a big situation. The ball didn't fall our way tonight."
De La Rosa (9-8) struck out six, walked three and allowed three hits while continuing a strong stretch by Colorado pitchers. The Rockies have allowed just three earned runs in 26 1/3 innings.
Arizona starter Max Scherzer (0-3) allowed three runs and seven hits, struck out eight and walked one in six innings in his sixth start of the season.
"We really need the wins. It's that point in time where they're even more important than the last game," Scherzer said. "Every time you take the ball it's more important to win your start. This loss really hurts."
The Rockies took a 1-0 lead in the first when Atkins drove in Matt Holliday with a single to left. Iannetta made it 2-0 with a leadoff homer in the second, his 18th.
Barmes made it 3-0 with a two-out homer in the fourth, his ninth. Dunn's 37th homer in the sixth made it 3-1.
The Diamondbacks' first scoring chance came in the fourth. With two outs, Dunn singled and De La Rosa walked Justin Upton and Reynolds to load the bases. He had a 3-0 count on Snyder before Snyder lined out to third to end the inning.
"Our bats seemed to get better as the game went along, but we came up one at-bat short," Melvin said. "We couldn't get one key at-bat at one key time."
Drew needs one double to become the fifth shortstop in NL history with 40 doubles, 10 triples and 10 home runs in a season. ... The Rockies are the second straight NL team to have a losing record the season after reaching the World Series. ... The Diamondbacks have lost a franchise-record 11 straight road games.