Shields escaped early trouble when Cain ran down a deep drive with the bases loaded, Billy Butler and David Lough backed their ace with home runs and the Royals handed the New York Yankees their third straight loss, 3-1 Tuesday night.
Cain contributed four nifty catches, and Shields appreciated each gem by the speedy center fielder.
"He seemed like he ran a little more than he usually does," Shields said. "I told him maybe I'll pay for a massage."
Said Cain: "Sounds good to me."
Defensive replacement Elliot Johnson ranged a long way for a late grounder and Kansas City backed Shields (4-6) with a pair of double plays. Fittingly, the game ended on a fine, twisting grab by another defensive sub, third baseman Mike Moustakas.
Beset by a lack of run support, Shields had won just once in his previous 12 starts, and came in with a losing record despite a 3.23 ERA and ranking among the AL leaders in several pitching categories.
Shields gave up five hits -- including three consecutive singles to start the game, and four in the first overall -- in seven innings. He struck out five, walked two and retired his final 13 batters.
"Forget the record. The record has nothing to do with how he's pitched," Royals manager Ned Yost said. "He's been as good as you would hope a No. 1 starter can be."
Shields improved to 8-15 against the Yankees after overcoming a rocky start. Brett Gardner led off with a bunt single and Ichiro Suzuki and Robinson Cano also singled for a run. New York loaded the bases with one out, but Shields fanned Lyle Overbay and wiggled out of trouble when Cain ran down Eduardo Nunez's fly far into the right-center field alley.
If that ball eluded him, Cain agreed, "the game is out of control."
CC Sabathia (9-7) gave up seven hits in his second complete game.
Once again, the Yankees had trouble scoring. They've managed exactly one run in each of their last three games -- not since 2005 had they scored one run or fewer in three straight, STATS said.
"Any time you put four hits in an inning, you think you'll get more than one run," manager Joe Girardi said.
As for Sabathia and the Yankees' staff, "I think they are pitching pretty good. They're throwing pretty good ballgames. We're just not scoring runs for them," Girardi said.
The hitting slump left the Yankees with a three-game home losing streak for the first time since they dropped four in a row in late July 2012.
Lough led off the sixth inning with a tying home run and Butler opened the seventh with a go-ahead shot. Butler hit 29 homers last year and was an All-Star, but has slumped this season -- he came into this series with six homers before connecting in the first two games.
"Got one yesterday, got one today," Butler said.
Greg Holland worked the ninth for his 22nd save, and second in two nights.
The Royals are trying to win a series at Yankee Stadium for only the second time since the beginning of the 2000 season. Thanks to Shields and the bullpen, they're 2-0 in this four-game set.
Shields didn't give up a hit after the second inning, sometimes pitching in rain and even hail.
"It was nice to settle down," he said.
Sabathia allowed only one hit until Lough homered. Butler's shot was the 20th homer yielded by Sabathia this season, second-most in the majors to the 21 off Kansas City's Jeremy Guthrie.
Gardner's streak of striking out ended at a team-record 16 games. He snapped an 0-for-16 rut with his bunt hit. ... Girardi said he hasn't ruled out rehabbing SS Derek Jeter from returning from the minors this weekend. ... Royals RHP Wade Davis (4-7, 5.42 ERA) starts Wednesday night vs. Yankees RHP Ivan Nova (3-2, 4.09). ... Cano's 32 hits off Shields are the third-most in the majors among an active hitter and pitcher, STATS said. Michael Cuddyer has 35 against Mark Buehrle, while Michael Young has 33 off John Lackey. If Manny Ramirez makes it back to the majors, his 36 off Andy Pettitte move to the top of the list. ... Sabathia pitched his 37th career complete game.