Allen Craig went 4-for-5 with a two-run homer and three RBI while David Freese and Carlos Beltran also each went deep with a runner aboard as the National League Central-leading Cardinals banged out 15 hits in the win.
Jake Westbrook (4-2) notched the decision, yielding four runs on four hits over six innings. He walked two and struck out three as the Cards rolled in the first of a two-game interleague series.
Astros starter Lucas Harrell (5-8) was pounded for seven runs on seven hits, lasting just 3 1/3 innings.
Brett Wallace drove in a pair of runs for Houston.