HOUSTON -- Dallas Keuchel probably could have thrown a second straight complete game on Tuesday night.
Houston Astros manager A.J. Hinch decided it would better not to overwork his ace.
Keuchel allowed seven hits in eight innings to lead the Astros to a 4-0 win over the Kansas City Royals. His latest gem came after tossing a six-hit shutout in a victory over the New York Yankees in his previous start. Keuchel struck out seven and didn't walk a batter to lower his ERA to an American League-leading 2.03.
Pat Neshek allowed one hit in the ninth after Hinch decided to Keuchel (10-3) had done enough after throwing 106 pitches.
"I've got to balance the short term and the long term," Hinch said of pulling Keuchel. "We know he likes to finish games. The complete game shutout would have been cool for a lot of people but it's a tough call all the time. Most importantly we need to get through the game and get done, and have everybody feel good on the accumulation over the season."
George Springer had a two-run homer in the third inning. Jose Altuve drove in a run in the fifth to help Houston to the victory. The Astros have taken the first two games in a matchup of teams with the best records in the American League. Houston is 46-34 and Kansas City is 44-30.
Kansas City starter Danny Duffy (2-4) allowed six hits and four runs in 6 2/3 innings in his second start since returning from the disabled list.
Keuchel has been a workhorse for the Astros, working at least six innings in 28 straight games, the longest active streak in the majors.
Lorenzo Cain had three hits for Kansas City, including two doubles, but the rest of the lineup fizzled. The Royals produced more than one hit in only one inning while being shut out for the second time in a week.
"(Keuchel) utilized both sides of the plate really effectively," Kansas City manager Ned Yost said. "He'd get us looking away and then he'd start pounding us in. We couldn't gauge him. He was changing speeds. He really did a great job of keeping the ball down."
Keuchel got a little help from his defense when Springer robbed Omar Infante of a hit to center field. Springer raced and made an over-the-shoulder catch for the third out of the seventh inning.
"I was trying to force some early contact," Keuchel said. "I know they like to swing the bat and just tried to use it to my advantage."
Marwin Gonzalez singled with two outs in the third inning before Springer's soaring shot, which bounced off the foul pole in left field to make it 2-0 and snapped Springer out of an 0 for 8 slump.
Evan Gattis tripled with one out in the fourth inning. The fly ball sailed just out of reach of the glove of Cain, who raced up Tal's Hill in center to grab it and instead crashed to the ground and into the padded wall after coming up short.
"I felt like my first two steps were good and then after that my legs just gave out and into the wall I went," Cain said. "I gave a great effort but at the end of the day, the hill won."
Chris Carter walked on a wild pitch by Duffy, which sailed over catcher Drew Butera's head, and allowed Gattis to score and make it 3-0.
Springer drew a one-out walk in the fifth inning before scoring on a double by Altuve to push Houston's lead to 4-0.
Kansas City shortstop Alcides Escobar, who was scratched from Monday's game with a bruise on his index finger, went 1 for 4.
Royals: 1B Eric Hosmer missed a second straight game and will likely miss Wednesday's game too with a sprained left ring finger. Yost said he isn't sure when Hosmer will return, but doesn't expect him to be out too long. Hosmer said he was feeling better on Tuesday and that most of the swelling was gone.
Astros: OF Colby Rasmus was out for the fourth straight game because of a skin infection on his left arm caused by a bug bite. Hinch said Rasmus spent Monday night in the hospital receiving intravenous antibiotics to try to eliminate the infection and that he remained there on Tuesday. Hinch said they hope Rasmus responds to treatment and can avoid going to the disabled list.
Houston rookie Vince Velasquez (0-0) tries for his first win in his fifth major league start when he opposes Kansas City's Edinson Volquez (8-4) in the series finale. Velasquez has a 3.72 ERA, but has not factored in the decision in any of his first four starts. Volquez looks for his fifth straight win.