Keuchel, who recorded 13 groundouts and just one flyout, went 5 1/3 innings and allowed no runs on five hits, four walks and a hit batter. He threw 95 pitches, his highest pitch count since throwing 105 on Aug. 6, and didn't strike out a batter for the first time in his rookie season.
"That's his game," Astros interim manager Tony DeFrancesco said. "Keuchel is a sinkerball pitcher. Over the plate and down on the outer half. If he does that, he's going to have success."
Keuchel, a rookie, earned his second win and his first since June 23. With an extreme focus on pitching to contact, sometimes the left-hander's final results don't mesh with how he pitched. On one night, groundballs could find a lot of his fielders' gloves. On other nights, the groundballs become hits that extend rallies.
Just focusing on executing pitches and the game plan could be key for Keuchel.
"I got too wrapped up in results," Keuchel said. "That's not how it's supposed to be. I let go of that the past couple outings and I think I'm heading back in the right direction where I was."
Keuchel has allowed one run over his last two starts, although neither of them lasted longer than 5 1/3 innings. On Friday, the Phillies' 3-4-5 hitters -- Chase Utley, Ryan Howard and John Mayberry -- went a combined 1-for-9.
The Astros gave Keuchel some early run support. Justin Maxwell's two-run homer off starter Kyle Kendrick in the first inning gave the Astros the lead. Maxwell, who also homered on Friday and carries a career-high nine-game hitting streak, has hit a team-high 16 homers in just 266 at-bats.
"That could project out to a 25 to 30 home run season for him and that's something we need for next season going into the American League," DeFrancesco said. "We're really happy with that."
Matt Dominguez, Jason Castro and J.D. Martinez all singled to load the bases in the second. Dominguez scored on a fielder's choice to give the Astros an early 3-0 advantage.
"That's all it takes for us sometimes," DeFrancesco said. "A young team, they get on the board early and they can try to add on. We can be more aggressive."
Brett Wallace doubled to score Keuchel after he singled in the fifth. Castro doubled with one out in the sixth off reliever Josh Lindblom and scored on Martinez's single.
The Phillies certainly had opportunities to put runs on the board. They loaded the bases in the first inning against Keuchel, but Ty Wigginton flied out to center for the third out. Every out Keuchel got after that came on the ground.
"The first inning for him has always been a problem so far," DeFrancesco said. "If we can get him confidence from [his pre-game bullpen session] to when he crosses the lines, his body can relax a little bit and he can enjoy it."
Philadelphia loaded the bases again with two outs in the fourth, but Keuchel made a nice snag of a comebacker off the bat of Kevin Frandsen and threw to first to escape the jam. The Phillies left 12 runners on.
"Tonight was unreal," Phillies manager Charlie Manuel said. "We have to keep playing. We got to play better. They outplayed us. They deserved to win the game."
Reliever Mickey Storey, who was hit on the right side of his face with a line drive in Thursday's game, struck out the two batters he faced in the sixth.
"If there's an unsung hero in that bullpen, I think it has to be Mickey Storey," DeFrancesco said.
Xavier Cedeno, Hector Ambriz and Wesley Wright finished off the game with scoreless innings, holding the Phillies to just two hits.
The Astros will get more chances to play spoiler in the final weeks. After finishing their four-game series with the Phillies on Sunday, the Astros play three games against the Cardinals in St. Louis, then three each against the Pirates and the Cardinals in Houston and three in Milwaukee. All three teams are contenders in the National League Wild Card race.
"That's really what we have fun with now," Martinez said. "We know we have no chance for the playoffs, and now we just want to have a good time and play spoiler and have fun while we do it."