Seth Smith added a 478-foot homer for the Rockies, who have taken the first two tests of this three-game series. It's their first four-game winning streak since June 14-18.
Carlos Lee and Johnny Paredes went deep for the Astros, who have lost three in a row after winning four straight.
Jordan Schafer singled in Jason Michaels in the top of the seventh to forge a 6-6 game, but Smith walked leading off the bottom half against Fernando Rodriguez (2-2). Herrera, who came into Tuesday hitting .172 at Coors Field this season compared to .293 on the road, got hold of a 2-1 pitch and homered to right field.
Matt Belisle (8-4) fanned the final two batters of a 1-2-3 top of the eighth, and Rex Brothers escaped a jam in the ninth to record his first big league save.
Clint Barmes walked leading off the ninth, and pinch-hitter Matt Downs singled with one out. Pinch-hitter Jason Bourgeois struck out looking and Jose Altuve fouled out to first baseman Todd Helton to end the game.