The start of the game was delayed for more than 3 hours due to rain, but Garza (2-1) rolled through the Astros with eight strikeouts.
Chris Carter hit a long ball for the Astros in the seventh.
The three Chicago runs came against Dallas Kuechel (4-4), who worked six innings and struck out a career-best nine.
Kevin Gregg worked a perfect ninth with one strikeout to collect his 11th save in as many chances.
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards
Pistorius testifies he didn't consciously pull trigger when he shot girlfriend