Erik Bedard and three relievers fought off the White Sox to bring the Astros their second straight win.
None of the three runs in the game was earned and Houston's two runs in the fifth were fueled by a fielding error on Chicago shortstop Alexei Ramirez.
That miscue allowed Ronny Cedeno to reach first and the next two Houston batters were retired.
Trevor Crowe then drew a walk and Brandon Barnes was safe at first when Ramirez threw the ball away for his second error of the inning. Cedeno scored on that play and Crowe came in moments later on the infield single by Altuve.
Sale (5-5) was the hard-luck loser, giving up just five hits while going the distance.
Bedard (2-3) allowed an unearned run on three hits in six innings. Jose Veras walked one and struck out one in the ninth on the way to his 12th save.