KANSAS CITY, Mo. -- Zack Greinke reached 25 scoreless innings in a row. It wasn't easy.
He stranded two runners in the first, struck out Travis Hafner and Jhonny Peralta to end the third with the bases loaded and struck out Grady Sizemore to end the fourth with runners on second and third.
"You can't say enough about what he did when he had to with runners on base," Royals manager Trey Hillman said. "That's when he was at his best. That's what guys with his kind of stuff and his ability can do on occasion. Thankfully, he was able to do it in several innings."
Greinke has thrown 11 scoreless innings this season in winning his first two starts and has not allowed a run since the sixth inning on Sept. 13 at Cleveland. He struck out nine, two shy of his career high, walked two and gave up six hits.
"Mainly the first and third innings were the ones that had me worried the most, but luckily I got out of it," Greinke said.
Shortstop Tony Pena Jr. scooped up Peralta's grounder up the middle to end the first with two runners on base.
"In the first inning, Tony made an amazing play," Greinke said. "Soon as it got by me, I knew it was gone. I was just real mad, but somehow he made the play. I don't know how many times I can continue doing that, but the last two games I've been doing good with men on base. You've got to take the two wins, no matter how it happens. That's as good as it can get."
The Royals scored three runs in the first off right-hander Fausto Carmona (0-2), who threw 42 pitches in the inning. Mark Teahen and Alberto Callaspo hit RBI singles around Billy Butler's run-scoring double.
Mike Jacobs, who hit 32 home runs for Florida last year and was acquired in an offseason trade, led off the fourth with a home run, his first for the Royals.
"Anytime you can get that first one out of the way, it's a good thing," Jacobs said. "I want to hit home runs over here as well. Homers are things that you don't necessarily go up and say I'm going to try to hit a home run on this at-bat or that at-bat. They just kind of happen."
The Indians stranded a dozen runners and went 4-for-13 with runners in scoring position.
"We squandered too many opportunities," Indians manager Eric Wedge said. "Greinke is a good young pitcher. We've seen him mature in the last couple of years."
Carmona allowed four runs on five hits and four walks in five innings.
"I had trouble getting the first pitch over for a strike," Carmona said. "I threw way too many pitches in the first. My ball was moving too much."
Hafner struck out three times and stranded eight runners, while Peralta also stranded eight runners.
After failing to get a hit in three innings off relievers Jamey Wright and Kyle Farnsworth, the Indians opened a two-run ninth with singles by Trevor Crowe and Asdrubal Cabrera off left-hander Ron Mahay.
Closer Joakim Soria was summoned, but gave up singles to Sizemore and Shin-Soo Choo on his first two pitches. Choo's single scored Crowe. A wild pitch brought home Cabrera and moved up the potential tying runs into scoring position. Soria, however, worked out of the jam to log his fourth save in as many chances. He struck out Peralta looking to end the game.
"It got a little hairy there, especially after the wild pitch, not being able to block that, and that tying run getting to second base," Hillman said. "I sure didn't like seeing that tying run get to second base and the meat of their order coming up. But Joakim did what he usually does. He doesn't let his heart rate get up there too much and got a couple of big strikeouts."
Royals 3B Alex Gordon was held out of the lineup for the second game in a row with soreness in his right hip, but Hillman said he would return to the lineup Tuesday. ... Wedge said LHP Aaron Laffey would be recalled from Triple-A Columbus and start Wednesday for the Indians in the finale of this three-game series. ... Royals C Miguel Olivo struck out three times, bringing his total to 11 times in 17 at-bats.