Keuchel (3-5) struck out eight and walked one. He lowered his ERA from 3.53 to 3.10 with his third straight outing giving up three runs or fewer.
"He just knew he could throw the ball where he wanted to at the speed which he wanted to," Astros manager A.J. Hinch said. "That's a very good strength of Dallas, when he can mess and disrupt the timing of the hitter."
"Once you establish the zone to a certain extent you start getting guys antsy and I feel like some of those guys were ready to hit early, and stay above the hitting speed or below the hitting speed and you've got a pretty good chance," Keuchel said. "I was thankful to do that."
Matt Moore (1-5) allowed three runs and six hits in three innings.
"I thought the first two innings were really good," Texas manager Jeff Banister said. "Third inning he started working from behind. Missed some pitches over the plate. There were deep counts."
Moore has given up 18 runs and 26 hits over 12 2/3 innings in his last three starts.
"The stuff coming out felt like the swing-and-miss stuff," Moore said. "The fastballs that were getting swung through, the changeups -- I threw three or four breaking balls, not many. That type of stuff was encouraging. I felt like I had good stuff."
"It's nice when we're all clicking on all cylinders," Gattis said. "But we don't have to have nine guys absolutely hot to win."
LHP Brandon Mann was brought up from Triple-A Round Rock and at 33 years, 362 days became the second-oldest player to make his debut for Texas when he entered in the seventh. Mann allowed one hit in 1 2/3 scoreless innings. RHP Yoshinori Tateyama was 35 years, 149 days when he debuted in 2011.
Rangers: Beltre left with one out in the seventh after re-aggravating a left hamstring injury. He fielded a Max Stassi slow chopper and was trying to tag Gurriel at third on the play before he came out. Beltre was activated off the disabled list on May 8 after missing 12 games with a left hamstring strain.
Beltre said the injury felt similar to the earlier strain but in a different spot. Banister said there is no timetable as of yet, but the team will know more when it gets to Seattle for a three-game series starting Tuesday.
"Tough because I didn't feel any setback, I didn't feel the hamstring at all," Beltre said. "I was trying to protect it the whole time because I knew it would take me a little longer to run hard on any play. That play when I turned, I felt it right away. Disappointed, but nothing I can do now."
Astros: OF George Springer was out of the lineup a second straight day after being hit on the left elbow by a Cole Hamels fastball. "Hopefully, he will be back in there tomorrow," Hinch said. "He was bouncing around the clubhouse, and I think he's done a little activity already."
Rangers: LHP Mike Minor (3-2) starts Tuesday's opener of a three-game series at Seattle. Minor has allowed at least four runs in two of his last three starts.
More AP baseball: https://apnews.com/tag/MLBbaseball
Fantasy baseball daily notes: Pitcher and hitter rankings for Saturday
Prepare your fantasy baseball lineups confidently with our daily preview, including pitcher projections, hitter matchup ratings and more.
Fantasy baseball forecaster: Team hitting ratings
Stay ahead of the game and optimize your fantasy baseball hitters with our forecaster, which provides a rolling 10-day outlook of every team's hitting matchups as well as the potential for stolen bases.
Fantasy baseball forecaster: Pitcher projections for the next 10 days
Keep up to date on who is pitching -- and how well they're expected to do -- with our forecaster, which provides a rolling 10-day outlook of every team's probable starting pitchers with game score projections.
Houston's Brantley puts 10-game hit streak on the line against Twins
Houston Astros (36-27, second in the AL West) vs. Minnesota Twins (25-38, fifth in the AL Central)
Indians host the Mariners following Civale's strong outing
Seattle Mariners (31-34, fourth in the AL West) vs. Cleveland Indians (33-27, second in the AL Central)
Phillies face Yankees, look to build on Wheeler's solid outing
New York Yankees (33-30, third in the AL East) vs. Philadelphia Phillies (30-31, second in the NL East)