The Cardinals banged out 15 hits in the game and held on for their fourth consecutive win despite a four-run Houston ninth.
Adam Wainwright (12-5) banked the win, giving up one run on five hits and striking out nine. Wainwright has allowed one earned run in three of his last four starts.
Bud Norris (6-8) took the loss in a rough five-inning start. Norris allowed seven runs on 11 hits and Houston fell for the ninth time in their last 11 games.
St. Louis built a 7-0 in the first five innings but the Astros put four across in the ninth on two RBI singles and two RBI ground outs.
Aaron Carter is still in love with Hilary Duff
NBC reportedly holds celebs hostage to Jimmy Fallon's show