Matt Holliday had two hits and drove in three for the Cardinals, who won the series and have taken six of eight overall. David Freese hit safely three times and knocked in a run while scoring twice
Kyle McClellan (4-0) picked up the win despite allowing eight hits and five runs over 5 2/3 innings.
Hunter Pence went 3-for-4 with two RBI and Chris Johnson added a two-run shot for the Astros, who have dropped five of their last seven. Carlos Lee added two hits and drove in a pair in defeat.
Fernando Abad (1-2) took the loss, charged with three hits and four runs while retiring just two batters.