The Astros, who entered the day a game behind the Angels in the standings, fell behind by three early before tying it up with a three-run second inning featuring a two-run homer by Chris Carter and an RBI single by Altuve.
Altuve drove in two runs in the fourth inning and tacked on another two with a double in Houston's four-run sixth to make it 10-5. He finished with three hits.
Chris Iannetta homered for the Angels, who played without Mike Trout because of an injured left wrist. He's listed as day to day.
Houston starter Collin McHugh (12-5) allowed seven hits and five runs with four walks in five innings for his third straight win.
C.J. Wilson (8-8) yielded six hits and six runs in four-plus innings.
Rookie Carlos Correa homered in the first as part of his three hits and Evan Gattis hit his career-high seventh triple for the Astros.
Conor Gillaspie put the Angels on top with an RBI double in the first. There were runners at first and third with one out when the Angels made it 2-0 when Erick Aybar grounded into a force out.
Houston cut the lead to 2-1 on Correa's two-out, opposite-field shot to right field in the bottom of the first.
Shane Victorino, who was making his debut with the Angels after a trade from Boston on Monday, singled to start the second. He scored on a single by Gillaspie. Albert Pujols added an RBI single with two outs to push the lead to 4-1.
Wilson plunked Luis Valbuena with no outs in the second before Carter's shot to the bullpen in right-center got Houston within 4-3. Wilson then hit former Angel Hank Conger with a pitch and made a gesture with his leg indicating that he thought Conger put his leg in front of the ball purposely.
Altuve, whose previous high in RBI was four, singled with two outs to score Conger and tie it up, but was out trying to stretch it into a double.
The Astros trailed by one in the fourth before going back on top thanks to aggressive baserunning. There were runners at first and second with two outs in the inning when Altuve singled to score Colby Rasmus. He took off for second on the play and waved Jake Marisnick home as he was about to get caught in a rundown, allowing Marisnick to score and make give Houston a 6-5 lead.