Arizona remained 4 1/2 games behind St. Louis for the second NL wild-card spot.
Wil Nieves had four hits and Hill had three for the Diamondbacks, who have won three straight and six of seven.
Wilin Rosario had three hits for the fourth game in a row and DJ LeMahieu also had three hits for the Rockies.
Trailing by one, the Diamondbacks rallied against reliever Matt Belisle (3-8) in the eighth. Pinch hitter Mike Jacobs tied it with a single and after Adam Eaton struck out, Hill hit his 24th homer of the season to make it 7-4.
Arizona tacked on three more in the ninth on Jake Elmore's two-run single and A.J. Pollock's RBI groundout.
Colorado scored three runs off Takashi Saito in the bottom of the ninth. J.J. Putz got the last for his 32nd save.
Mike Albers (3-1) got the win with an inning of scoreless relief.
The Rockies took a 4-3 lead against Ian Kennedy in the sixth on Charlie Blackmon's RBI single.
Arizona took a 2-0 lead in the second on RBI singles by Cody Ransom and Nieves. Ryan Wheeler scored the second run while pinch running for Chris Johnson, who left the game with a bruise on his left hand after getting hit with a pitch from Jeff Francis.
The Diamondbacks made it 3-0 when Wheeler drew a bases-loaded walk against
Kennedy didn't allow a hit until Francis singled to lead off the third. He held the Rockies in check until the fifth when they rallied to tie it.
Kennedy got the first out of the inning before allowing five straight hits. Blackmon and Jordan Pacheco had RBI singles and Rosario made it 3-all with an RBI double.
Chris Nelson and Tyler Colvin struck out with runners on second and third to end the inning.
Kennedy allowed four runs on nine hits and struck out six in six innings.
Francis allowed two runs on five hits in four innings. He and hasn't won since beating the Dodgers on Aug. 27.
NOTES: Nieves tied his career high for hits in a game. ... Arizona's Justin Upton extended his hitting streak to 10 games with a single in the fifth. ... Rockies OF Carlos Gonzalez (tight left hamstring) was out of the starting lineup for the third straight game.