St. Louis built a 6-0 lead and then held on to win for the fifth time in seven games. The teams have split the opening two outings of a three-game series.
Houston then scored three times in the eighth and made it interesting in the ninth against Eduardo Sanchez.
Joe Inglett had a one-out single and scored on a triple by Jason Bourgeois. Michael Bourn produced a sacrifice fly, bringing the Astros within one with two away and the bases empty.
Angel Sanchez, however, doubled to right and Hunter Pence came up as the potential winning run. Sanchez struck put Pence swinging to end the game and collect his first save.
Kyle Lohse (4-1) did not give up a run over seven innings to get the win. He allowed four hits and struck out two.
The loss went to J.A. Happ (1-4), who surrendered two runs on five hits in five frames.
Susan Sarandon 'very excited' about daughter's pregnancy
Interpol investigating stolen passports on missing flight