KANSAS CITY, Mo. (AP) -- Vernon Wells hit a go-ahead two-run homer then made a long running catch that preserved a 3-2 victory for Andy Pettitte and the New York Yankees over the Kansas City Royals on Saturday night.
Pettitte (4-2) showed off his mastery of the Royals once more, allowing a run-scoring groundout by Lorenzo Cain and a solo homer by Billy Butler in seven stellar innings. The 40-year-old left-hander gave up five hits, struck out seven and improved to 15-3 in his career against the Royals.
Kansas City hasn't beaten Pettitte in 14 starts dating to Sept. 4, 2000.
James Shields (2-3) was hurt by a throwing error on third baseman Mike Moustakas in the second inning that resulted in the Yankees' first run. He also gave up Wells' two-run shot in the fifth, moments after Butler's home run had staked Kansas City to 2-1 lead.
David Robertson struck out the side in the eighth for the Yankees, and Mariano Rivera worked around a two-out double by Salvador Perez in the ninth for his 14th save to start the season.
It wasn't without some tension, though.
Moustakas nearly drove in Perez with a liner down the right field line that just landed foul, and then continued to fight off pitches before sending a drive into the left-center field gap that Wells tracked down to end the game.
Rivera has converted his last 28 opportunities against the Royals dating to a blown save on Aug. 18, 1998, at Kauffman Stadium. He's only wasted two save chances against Kansas City in his career, and his streak of successful saves is his longest against any team.
The Royals lost for the fifth time in six games, despite Shields' solid start. Their new ace lasted eight innings for the third time in his last four outings - and each of those times he's failed to pick up the win.
The right-hander fell to 7-15 in his career against the Yankees.
The bounces certainly seemed to be going the Yankees' way most of the night.
Travis Hafner hit a slow grounder toward first base in the fourth inning, and Shields and first baseman Eric Hosmer had trouble deciding who should grab it. Neither of them did until it was too late, and Hafner coasted across the bag for an infield single.
Lyle Overbay hit another grounder in the sixth inning that Elliot Johnson fielded at second base, but only after shortstop Alcides Escobar bumped into him. The slight hiccup allowed Jayson Nix to reach second safely and Overbay to be safe at first.
Meanwhile, a hard-hit ball by Moustakas leading off the seventh inning caromed off Pettitte's glove and right to Robinson Cano. The Yankees' second baseman made the soft toss to first, turning a potential base hit into an easy groundout.
Cano had another rough night in Kansas City, though.
The Yankees' All-Star was booed mercilessly for the second straight night by Royals fans who no doubt still remember his decision to snub Butler for the AL squad during last year's home run derby, which was hosted by the Royals as part of All-Star festivities.
Cano went 0 for 4 and struck out looking in the seventh, arguing with plate umpire Mark Wegner over the third strike. First base coach Mick Kelleher got between them and Yankees manager Joe Girardi also ran onto the field to make sure Cano wouldn't be tossed from the game.
NOTES: The Yankees plan to use a pitcher to fill the 26th player on the roster for Monday's doubleheader at Cleveland. Girardi didn't know who it would be. ... Royals RF Jeff Francoeur was back in the starting lineup after having Friday night off. ... RHP Hiroki Kuroda (4-2) will pitch Sunday's series finale for the Yankees against Kansas City RHP Ervin Santana (3-1).