L.J. Hoes and Carlos Corporan both homered and drove in three for the Astros, who had been outscored 61-27 during their 10-game home slide versus Texas. Chris Carter went 3-for-4 and scored twice and Jose Altuve had two hits and two runs scored. Altuve now has 12 hits during his six-game hitting streak.
Keuchel (4-2) allowed just seven hits, struck out seven and did not issue a walk to win his second straight decision.
Texas starter Matt Harrison (1-1) pitched around a pair of walks to get out of the first inning but could not survive the second. Carter led off with a single and Hoes followed with a two-run blast to left. Harrison retired the next two batters, but Altuve's double kept the inning alive. George Springer walked and Dexter Fowler delivered another run with a single to center.
Harrison was then greeted at the mound by team trainers and left the game with apparent back stiffness. Justin Germano took the hill and ended the second by getting Matt Dominguez to ground into a fielder's choice.
Altuve's three-bagger in the fourth inning led to another Houston run. With one out, Springer slapped an RBI single the other way to right.
Hoes knocked in the fifth run for the Astros with a dribbler down the third base line in the bottom of the fifth, and Corporan broke the game open with his three-run home run to left.
Keuchel only got stronger as the game went on. The lefty faced the minimum in three of the last four innings, only pitching to four batters in the eighth after Springer's error in right field. He struck out the side in the stanza.