KANSAS CITY, Mo. (AP) James Shields would have been wise to pop some Dramamine, Ned Yost some antacids.
The Royals' ace survived six shaky innings mostly of his own doing Sunday, and the Kansas City offense supplied just enough offense against Hiroki Kuroda to squeak out a 2-1 victory.
''Shields had to grind it out again and again,'' said Yost, his manager, who spent the entire game on edge, ''and he made it through some choppy waters.''
Even without any motion-sickness medicine.
The Royals have won the last seven games that Shields (7-3) has started, and he's earned the win in four of those. The veteran right-hander may have lasted only six innings in this effort, but he gave up only six hits to the punchless Yankees and allowed one unearned run.
''They're always tough,'' said Shields, who faced the Yankees for the 30th time, more than any other club. ''They make good at-bats. It's always a grind whenever you face them.''
Aaron Crow escaped a jam in the seventh inning, and Wade Davis recorded the 500th strikeout of his career during a perfect eighth before Greg Holland survived a shaky ninth for his 18th save.
The All-Star closer gave up a leadoff single to Ichiro Suzuki and then sent him to second on a wild pitch. Holland kept his cool, retiring Brian Roberts on a fly out, pinch hitter Mark Teixeira on a groundout and then striking out Brett Gardner to end the game.
''Shields battled his butt off,'' Crow said. ''You want to make sure he gets the win.''
The Yankees failed to score more than four runs for the 10th consecutive game, though the not-so-aptly-named ''Bronx Bombers'' certainly had their share of chances.
Not just in the ninth inning, either.
New York stranded runners on first and second in the first inning. It loaded the bases with nobody out in the second and failed to score. Jacoby Ellsbury led off the third with a double and was left on third base. And Roberts was stranded after a fourth-inning double.
''Somehow we've got to find a way to get it done,'' Yankees manager Joe Girardi said.
In all, 10 of the first 12 outs Shields recorded were with runners in scoring position. The Yankees finished 1 for 17 with runners in scoring position.
''It was a game of missed opportunities,'' Derek Jeter said. ''We had a lot of opportunities. Gives those guys credit. We've seen Shields for years now and he's as good as they come, especially with guys on base. He bears down.''
While the Yankees were struggling to find a clutch hit, the Royals managed to string together the only real success they had against Kuroda (4-4) with two outs in the second inning.
Hot-hitting Salvador Perez, who cracked a three-run homer in an 8-4 win Saturday night, got things going with a single. Cain's base hit drove in the first run and Moustakas, in the throes of another major slump, added another single to make the score 2-0.
That was all the Royals could muster against Kuroda, who had been unbeaten in his last six starts. He allowed five hits and two walks while striking out three in seven innings.
New York finally scored in the sixth, when Yangervis Solarte hit a double and reached third base on a passed ball. Suzuki drove him in with a groundout to shortstop.
But given a chance to tie the game, the Yankees kept coming up empty.
Their failure in the ninth inning came after Gardner sent a triple to the wall with one out in the seventh. Crow rebounded to get Jeter on a ground out, and then struck out Ellsbury with a full-count pitch to leave the tying run 90 feet away.
''When guys are scuffling it seems like they are scuffling in bunches. When you get hot it seems like a lot of guys are hot,'' Jeter said. ''These are the times you've got to keep swinging. The only way to get out of it is swing out of it.''
NOTES: Davis has not allowed a hit in 15 appearances. ... The double by Roberts was actually a ground-rule double. A ball boy picked up his fair ball down the right-field line and gave it to a fan. ... Royals 2B Omar Infante ended a 0-for-19 slump with a single in the third. ... LHP Vidal Nuno starts the series finale Monday for New York. LHP Jason Vargas starts for Kansas City.