Cardinals starter Jaime Garcia (W, 6-7) blanked the Astros in seven strong innings of work, allowing only six hits and striking out five in 92 total pitches.
Catcher Yadier Molina scored center fielder Jon Jay on a sacrifice fly for St. Louis's first run of the game in the first inning off of Houston starter Lucas Harrell (L, 10-11), who went five innings while wading through seven hits and six walks to only allow two earned runs.
Jay had two RBI on the night, driving in Garcia on a single in the second and tacking on an insurance run after grounding into a fielder's choice in the eighth. Shortstop Pete Kozma also knocked in a run in the eighth on a double to right field, scoring second baseman Daniel Descalso.
With the win, the Cardinals' lead in the National League Wild Card standings improves to four games over the closest team, the Los Angeles Dodgers.
The Astros and Cardinals wrap up their three-game set on Wednesday night at Minute Maid Park.