Jose Altuve went 4-for-5 and scored three runs for the Astros, who won their second in a row after enduring an eight-game losing streak.
Maxwell's two-run homer came in the second inning and Bogusevic added a solo shot on the fourth to give Houston a 6-3 lead and enough of a cushion to hold off a four-run rally by the visiting Cardinals in the ninth.
Rafael Furcal homered in the ninth with a man on, but Brett Meyers held on to notch the save and give Lucas Harrell (5-4) the win. Harrell went six innings, allowing four runs -- three earned -- on eight hits.
Matt Adams and Adron Chambers homered for the Cardinals, who have lost six of seven. Jaime Garcia (3-4) took the loss, allowing six runs on five hits in two innings.
Beyonce flaunts bikini body, Blue Ivy in vacation pics
Kate Middleton recycles dress at movie premiere