"That was as effective with his fastball as he's been all season," manager A.J. Hinch said. "He really found a rhythm late in the game."
Early on, it didn't look as though McCullers' night would be anything special, as he gave up three hits in the first two innings, but he was relentless over the next six, notching eight of his 10 strikeouts.
Three of those 10 were to 2014 American League MVP Mike Trout.
"He's an unbelievable player -- everybody knows that," McCullers said. "Today I got him a couple times."
McCullers, who retired 14 of the last 16 batters he faced, tried for his first career shutout, but he walked Kole Calhoun and Trout in the top of the ninth. Astros closer Will Harris gave up an RBI single later in the inning to erase McCullers' shutout, but the Astros hung on for the win.
It was McCullers' fifth win of the season and second straight against the Angels. He allowed only one run and six hits in 5 2/3 innings against Los Angeles last time the two played, on June 22.
McCullers has now allowed three runs or fewer in each of his 18 career home starts, which is a club record.
"I like pitching here," he said. "I like the stadium. I like the mound. I like waking up at home. I like going to places I'm normally going. I don't really know. I guess I like pitching here more than the road."
Jordan Ray is a reporter for MLB.com based in Houston.