Johnson's RBI single in the fourth inning tied the game 1-1 and his two-run blast in the eighth made it 5-1 for the Astros, who clinched their three-game interleague series at Minute Maid Park.
J.D. Martinez added a two-run clout and Carlos Lee provided two hits and an RBI for Houston, which improved to 21-17 on its home field.
Happ (6-7) limited the Indians to one run on four hits over seven innings, walking two while striking out five.
Derek Lowe (7-6) absorbed the loss, giving up three runs on eight hits over 6 2/3 frames.
The Indians came into the contest clinging to a 1/2-game lead in the American League Central.