Cardinals starter Kyle Lohse had trouble throwing strikes, but was able to get outs when he needed them while working with the lead. He pitched five innings and gave up three hits and one run, throwing only 34 of his 69 pitches for strikes.
Astros starter Jordan Lyles, competing for the final spot in the pitching rotation, was hit in the midsection by a Daniel Descalso line drive to lead off the game, but settled in nicely after a rocky first inning. Lyles retired 11 of 12 batters in one stretch, needing only seven pitches in the second inning, eight in the third and nine in the fourth.
The Cardinals took a 4-0 lead in the fifth on an RBI triple by Erik Komatsu, and Chris Johnson got the Astros on board in the bottom of the frame with a leadoff home run to left-center field. The homer was the second of the spring for the hot-hitting Johnson, who's battling for the starting third-base spot.
St. Louis added a run in the sixth on an Adron Chambers grounder against Astros reliever Brandon Lyon.
Up next: The Astros will take Wednesday off before returning to action Thursday, when they travel to Port St. Lucie, Fla., to face the Mets on MLB.TV at 12:10 p.m. CT. Wandy Rodriguez is coming off a woeful start Friday against the Braves, during which he allowed eight hits and seven earned runs in 3 1/3 innings. He's expected to be the Astros' Opening Day starter.