He threw seven solid innings, Josh Reddick finished a single shy of the cycle and the Houston Astros beat the Los Angeles Angels 5-1.
Keuchel (3-0) allowed one run on eight hits with seven strikeouts.
"I think we're getting exactly what you'd expect," Houston manager A.J. Hinch said. "When I hand the ball to Dallas every five days, at his best, he's keeping the ball on the ground and missing bats. He did both of those tonight."
The left-hander has allowed one run or fewer in all four of his starts, going seven innings in each outing. The only other Astros starter to open a season allowing one run or fewer in each of his first four outings while going at least seven innings was Roger Clemens in 2005.
"I've just been feeling good and trying to ride the momentum and quality of pitches into the next start," Keuchel said. "More times than not, I have been making quality pitches."
Reddick tripled in the first and scored on a Jose Altuve single, doubled in the sixth and scored on an Evan Gattis single and hit a two-run homer to right in the seventh that went over Cameron Maybin's outstretched glove and fell in the first row. Reddick struck out in the third.
"It was huge," Reddick said of his performance. "Not just my day, but in general to be able to drive in runs and score them at the same time. It was a great feeling."
Yulieski Gurriel also had an RBI single in the fifth that gave the Astros a 2-1 lead.
Yunel Escobar hit an RBI single in the third that tied it at one. The Angels, who finished with eight hits, lost for the first time this season when getting eight or more hits. They were 7-0 entering the game when getting eight or more hits.
"I thought we battled him," Angels manager Mike Scioscia said of Keuchel. "He's good. He had the ball down. He got the ground balls when he needed it. I thought we had a good approach against him."
JC Ramirez (2-2) allowed three runs on six hits with a career-high nine strikeouts in 5 1/3 innings. The right-hander improved from his first career start Friday against Kansas City where he was tagged for five runs in five innings.
"I was pounding the strike zone," Ramirez said. "I said last night I had to mix my pitches. I like what I did today, but I threw too much offspeed. It helped me when I was behind in the count and it helped me to put away those guys."
Astros: SS Carlos Correa (bruised right hand) was out of the lineup for a third straight game. Correa took batting practice and fielded ground balls prior to Wednesday's game. Hinch said Correa is still considered day-to-day. "He's got some questions to answer but things are pointing in the right direction," Hinch said. "Today is a big day for him to get into baseball again."
The Angels optioned C Carlos Perez to Triple-A Salt Lake before the game and called up C Juan Graterol. Perez was 1 for 13 with an RBI this season and had not played since Sunday. "Carlos needs to play to get his game back," Scioscia said. "Juan is a really good fit up here. He caught well for us last year. The move was made because of that."
Angels: RHP Matt Shoemaker (0-0) makes his fourth start of the season and third on the road in the series finale Thursday looking to build on his last outing where he allowed two runs in 5 1/3 innings Saturday at Kansas City.
Astros: RHP Lance McCullers (1-0) takes the mound Thursday looking to rebound after giving up a season-high five runs on eight hits in 4 1/3 innings in a no-decision Saturday in Oakland. McCullers is 2-1 with a 2.09 ERA in six career starts against the Angels.