"Dallas did a great job," Astros manager Bo Porter said. "Overall great job to give us the amount of innings he gave us against an opponent like that."
Keuchel entered Friday's contest 0-5 with an 8.74 ERA on the road, and after he allowed the first three Angels batters to reach base in the second inning, it appeared the game was headed down that all-too-familiar path.
"I knew they were going to put together some hits back to back, because that's how good they are, but I knew as long as I kept it together, I could get us back to the dugout and keep us in the game," Keuchel said.
Instead of letting the inning get away from him, the left-hander was able to get his team back to the dugout, found a rhythm and allowed just two runs -- both in the second -- on six hits in seven innings.
"I'd like to take back that second inning, but other than that I felt pretty good," Keuchel said. "That lineup can change a lot of scores with one swing, so I wasn't careful, but I was cautious of some hitters -- didn't give in to some guys."
While the Astros were quiet for the first three innings, the offense gave Keuchel some support in the fourth.
Catcher Jason Castro got things started by leading off the frame with a home run -- his seventh of the season.
"I think Jason's doing a great job," Porter said. "The biggest thing for him was health-wise. He's healthy now and you're starting to see what we all knew he was capable of doing. Each and every day you're pretty comfortable when you know he's in the lineup."
Houston then tacked on two more runs when J.D. Martinez singled and Carlos Pena doubled, putting runners on second and third with no outs.
First baseman Chris Carter hit a sacrifice fly to left, and two batters later, third baseman Matt Dominguez hit a sacrifice fly to right to give the Astros a 3-2 advantage.
"I left some pitches up in the fourth," Angels starter Tommy Hanson said.
The Astros provided themselves some breathing room when they scored a trio of runs in the seventh.
Ronny Cedeno led off the inning with a triple off the center-field wall -- a ball that Angels center fielder Mike Trout appeared to lose in the lights -- and scored on Brandon Barnes' RBI single, the center fielder's first hit in nine at-bats.
Jose Altuve followed with a single, Castro reached on an error -- which scored a run -- and Pena's RBI single capped off the inning.
"I hung two sliders in that last inning that got me in trouble," Hanson said. "Other than that, I feel like I threw the ball well."
The Angels scored two runs in a second inning that had the potential to be a lot more lopsided. Mark Trumbo led off the frame with a double. Josh Hamilton and Chris Iannetta then followed with singles to give the Angels a 1-0 lead with runners on first and second and no outs.
But a sacrifice bunt, an RBI groundout from Chris Nelson and a groundout to the pitcher ended the threat.
Jose Veras pitched the ninth for his ninth save.
"We've got a resilient group," Porter said. "These guys enjoy coming to the ballpark, they enjoy playing together each and every day. That's why we talk about the process. They come here with the thought process of, 'We are going to play our best baseball today.'"
William Boor is an associate reporter for MLB.com.