PHOENIX -- Chad Tracy has added respect for how tough it is to pinch hit, now that it's his usual role.
"It's the toughest way to make a living in the game, in my opinion," he said.
Justin Upton drove in three runs with a homer and a triple for the Diamondbacks, who were eliminated from playoff contention with a loss in St. Louis on Thursday. Stephen Drew hit a solo homer for Arizona.
Arizona's Dan Haren failed in his bid for his 17th victory but surpassed 200 strikeouts in a season for the first time in his career.
"My stuff was actually really good today," Haren said, "better than it's been the last couple of times. My control was there and I found a rhythm."
Colorado's Jason Grilli (3-2) retired the first two hitters in the eighth, then Miguel Montero lined a double off the wall in left. Jeff Salazar walked on four pitches to bring up Tracy, who doubled down the right field line.
"It seems like he's acclimating to a pinch-hit role over the past couple of years," Arizona manager Bob Melvin said. "He really gives you a battle at-bat. I thought it was a really good at-bat, to square one up down the line after seeing quite a few pitches."
Haren gave up four runs, three in the first inning, and eight hits, striking out nine in seven innings.
"Other than just a wacky first inning, I thought he pitched very well," Melvin said. "I think he's had an exceptional year, especially when at the beginning he was kind of the hard-luck guy. He easily could have had a couple more wins."
Colorado manager Clint Hurdle was ejected by umpire Ron Kulpa in the seventh. Hurdle, tossed for the second time this season, was upset that Troy Tulowitzki was called out trying to steal second.
"With the information that Ron shared with me, I didn't see any way he could call him out," Hurdle said. "He said that's what he had, that was the call, and I wasn't buying it."
The last of the Rockies' first-inning runs came under curious circumstances.
Tulowitzki and Brad Hawpe had RBI doubles off Haren in the first, then Garrett Atkins bunted. Montero, the catcher, threw out Atkins at first, but Haren failed to cover home, allowing Hawpe -- on second when the play began -- to score.
Upton's 430-foot homer off the batter's eye in straightaway center cut it to 3-1 in the fourth, then Drew's 426-footer onto the porch in left-center made it 3-2 in the fifth.
David Eckstein followed Drew's homer with a double down the left field line.
Matt Herges relieved starter Jason Hirsh and gave up a single to Conor Jackson that advanced Eckstein to third. Adam Dunn popped out to bring up Upton, who lined a shot to the left-center gap for a standup triple.
Hirsh allowed three runs and five hits in 4 1/3 innings in his first major league start off the season.
"It went OK," Hirsh said. "I fell behind a lot of counts, threw a lot of pitches early, and that's not a very effective way to pitch."
Hurdle's other ejection this season was April 8 against the Dodgers in Los Angeles. ... Colorado LF Matt Holliday was a late scratch with a stiff lower back. Arizona CF Chris Young was out with a sore knee. ... The Diamondbacks need to win their final two games to finish the season above .500.