Keuchel (3-2) kept the Tigers off balance for much of his outing, allowing just two runs on six hits while striking out seven without issuing a walk.
George Springer and Carlos Corporan each clubbed a solo homer while Matt Dominguez added a two-run blast for the Astros, who had lost five straight and seven of their last eight games.
Jose Altuve tallied a go-ahead, two-run double in the triumph.
Detroit starter Drew Smyly (2-2) surrendered three runs on five hits and three walks over 5 1/3 frames to absorb the loss. Victor Martinez registered three hits, including a solo homer, in the setback.