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: After a recent road-heavy schedule, the Cardinals return to Jupiter for a 12:05 p.m. CT game against the Mets on Wednesday. Eight of the club's next nine games will be played in Roger Dean Stadium. Making the start on Wednesday will be Jake Westbrook, who has allowed just one earned run in his first nine Grapefruit League innings. Chris Carpenter is also scheduled to throw on Wednesday, though he won't be doing so in the game. Carpenter is slated to throw his second session of batting practice since missing time with neck stiffness.