DENVER -- Shawn Estes was missing his best pitch and he still managed to throw another outstanding game at Coors Field.
"My curveball wasn't great tonight," said Estes, who improved to 12-6 lifetime at Coors Field. "I got a majority of my outs on my fastball, but I kept them off-balance with my changeup."
Estes (7-7) allowed five hits, walked four and struck out two. The left-hander was activated from the disabled list before the game -- he had been out since July 6 with a stress fracture in his right ankle.
"This is not the ideal place to come back from the DL," Estes said. "Your body doesn't feel as good out there with the altitude, you get dehydrated and my body just didn't feel great today.
"But when you get into the flow of the game and get the adrenaline going, then that kind of stuff leaves."
Troy Glaus and Craig Counsell also connected for the Diamondbacks, who began the day eight games behind first-place San Diego in the NL West.
The Rockies stranded nine runners in the first six innings against Estes.
"Some of it is the pitching," Colorado's Todd Helton said. "Some of it is us."
Rockies starter Byung-Hyun Kim (5-11) matched a career high with eight strikeouts. He gave up three runs and eight hits in six innings.
Kim was once an effective closer for Arizona. He pitched for the Diamondbacks from 1999-03.
Arizona reliever Brandon Medders, manager Bob Melvin and bench coach Jay Bell were ejected in the ninth inning after Medders hit Luis Gonzalez in the back with a pitch.
Three times Colorado had two on in an inning with one out and failed to score. Garrett Atkins walked and Dustan Mohr singled with none out in the second, but Estes retired the next three batters.
Gonzalez, who had three hits, singled and Helton walked with one out in the third. After a double steal as Matt Holliday struck out, Atkins tapped weakly back to Estes.
The Rockies also left runners at second and third in the sixth. Estes got pinch-hitters Ryan Shealy to pop out and Todd Greene to ground out.
"We couldn't buy a hit when we needed one," Colorado manager Clint Hurdle said. "We went three games where we got the hit when we needed it and we haven't been able to get one the last three games."
The Diamondbacks stranded four runners and hit into two double plays in the first four innings before Tracy's 21st homer in the fifth.
Estes reached on a fielder's choice and Counsell drew a one-out walk. Tracy followed with a long drive to center.
"The pitch came back out over the plate a little bit," Tracy said. "I just tried to put a good bat on it and I hit it pretty good."
The Diamondbacks made it 5-0 in the seventh. Counsell homered just inside the foul pole in right off Randy Williams, and Jamey Wright issued a bases-loaded walk to Royce Clayton.
The Rockies scored in the eighth against Lance Cormier. Holliday reached on Tony Clark's error at first base and Atkins doubled to left. Holliday scored on a groundout.
Glaus hit his 31st homer in the ninth and pinch-hitter Alex Cintron added an RBI double.
"You have to put a game away and that's what Estes does," Melvin said.
To clear a roster spot for Estes, Arizona recalled infielder Jerry Gil from Double-A Tennessee and placed him on the 60-day disabled list. ... Right-hander Dustin Nippert is scheduled to start for Arizona on Sept. 16 against Colorado. ... Atkins has a career-high 14-game hitting streak.