KANSAS CITY -- Royals third baseman Cheslor Cuthbert had two hits and three RBIs in a rare start, while shortstop Alcides Escobar had two hits and two RBIs in a 7-5 win over the short-handed Astros on Wednesday night.
Closer Kelvin Herrera struck out the side in the ninth inning, including Yuli Gurriel with a runner on first base to end the game.
Astros left-hander Dallas Keuchel, who hadn't been feeling well, was a late scratch because of an undisclosed illness. Right-hander Dayan Diaz, just called up from Triple-A earlier in the day, made the emergency start and lasted 2 2/3 innings, giving up four hits and three runs. Relievers Tony Sipp and Michael Feliz each gave up two runs.
"Diaz hadn't pitched in a few days and we were fortunate to have him, and he went as long as he could," Astros manager A.J. Hinch said. "It started with an already taxed bullpen and we pieced it together to even have the [potential] tying run up to bat in the eighth and the ninth, it was a pretty good testament to our 'pen doing the best it could."
Left-hander Jason Vargas (8-3) grinded through five innings, giving up six hits and two runs while walking one and striking out five.
"I thought he scrapped," Royals manager Ned Yost said. "That's the mark of a good pitcher. When you don't have your best stuff, you can still grind your way through it."
Royals rookie Ramon Torres, called up from Triple-A Omaha before the game, made his Major League debut and got his first hit, an RBI double in the fourth inning off reliever Tony Sipp.
Brian McCann, who had four hits, hit his eighth home run for the Astros.
MOMENTS THAT MATTERED
Cuthbert's big night: Cuthbert got the Royals on the board early with an RBI double in the second inning. But it was his big two-out, two-run bases-loaded single to right field in the fifth off Feliz that really put the game out of reach at 7-2.
Saving the lead: The Royals were cruising with a 7-2 lead in the eighth until the Astros began to mount a comeback against reliever Scott Alexander. With two out, Jake Marisnick singled in McCann and George Springer walked. Alexander then was replaced by Joakim Soria. The inning could easily have ended on the next batter, but Escobar mishandled a ground ball and two runs scored. Soria then induced a groundout from Jose Altuve to Cuthbert, who raced to the bag for a forceout to end the inning.
"When the ball was hit to me, I was thinking, 'Alcides help me,'" Cuthbert said. "He was like, 'Third, third, third.' That's when I knew I had the opportunity to make the out at third."
Royals catcher Salvador Perez injured the thumb on his catching hand in the eighth inning and wasn't behind the plate in the ninth as a result. Yost said the injury happened when Alexander struck out Carlos Beltran. Perez finished the inning, which lasted seven more batters. He is listed as day to day.
"The ball kind of caught [Perez] in the thumb and dinged his thumb a little bit," Yost said. "We'll see how he feels tomorrow."
Astros: Right-hander Lance McCullers (6-1, 2.71 ERA) will start the series finale on Thursday at 7:15 p.m. CT. He gave up four runs (three earned) and six hits in 4 1/3 innings on Saturday against the Rangers in Arlington.
Royals: Right-hander Jason Hammel (2-6, 5.93) will take the mound against the Astros on Thursday at Kauffman Stadium. Hammel worked 6 2/3 innings on Saturday in a 12-5 win over the Indians, retiring 15 of the final 17 batters he faced.
Watch every out-of-market regular-season game live on MLB.TV.