The Astros trailed by one entering the seventh when Trey Mancini led off with a single. McCormick then connected on his homer off Andrew Wantz (2–1) to put Houston ahead 3–2.
The Astros added an insurance run in the eighth when McCormick drew a bases-loaded walk off José Marte.
Houston starter Lance McCullers Jr. (3–1) gave up four hits and two runs with six strikeouts in a season-high seven innings for his second straight win.
Closer Ryan Pressly allowed a solo homer to Taylor Ward with one out in the ninth before striking out the next two batters to get his 26th save in his return from the injured list after being out since August 22 with a neck strain.
The only damage Los Angeles did against McCullers was a two-run homer by Mike Trout that made it 2–0 in the sixth. It was the fifth straight game in which Trout has homered, for the longest streak of his career and tying a franchise record.
He tied Bobby Bonds, who did it from Aug. 2–7, 1977, for the longest streak in Angels’ history.
It was Trout’s 33rd homer to tie him with teammate Shohei Ohtani for second-most home runs in the American League behind Aaron Judge, who has 55 for the New York Yankees
The Astros had managed just one hit off Michael Lorenzen when Peña homered into the seats in right field to cut the lead to 2–1 with one out in the sixth.
Lorenzen allowed three hits and one run with four walks in his return after missing 56 games with a strained right shoulder.
He struggled with control early and his third walk of the second inning loaded the bases with two outs.
But Martín Maldonado grounded into a force out to allow Lorenzen to escape the jam. He walked Bregman to start the fourth, but still faced the minimum in that inning when Bregman was caught stealing for the third out.
The Astros didn’t get a hit until McCormick singled to start the fifth inning. He was erased when David Hensley grounded into a double play before Lorenzen retired Maldonado to end the inning.
Angels: OF Mickey Moniak was reinstated from the injured list before Friday’s game. He had missed 29 games with a fractured middle finger on his left hand.
RHP Touki Toussaint was optioned to Triple-A Salt Lake City and OF Ryan Aguilar was designated for assignment to make room for Moniak and Lorenzen on the roster.
C Max Stassi was removed from the game in the seventh inning as a precaution after taking a foul tip off his mask.
Astros: RHP Brandon Bielak was optioned to Triple-A Sugar Land to free up a roster spot for Pressly.
Ohtani (11–8, 2.58) starts for Los Angeles against Jose Urquidy (13–5, 3.51) when the series continues Saturday night.
By Kristie Rieken