It turned out that all the 40-year-old left-hander needed to do was a make a couple of minor adjustments - alter his arm angle ever so slightly, for one thing - to get back on track.

Pettitte pitched seven stellar innings Saturday night, and Vernon Wells hit a go-ahead two-run homer before making a long running catch for the final out, giving the New York Yankees a 3-2 win over the Kansas City Royals.

Pettitte (4-2) allowed seven runs against Houston and only lasted five innings his last time out against Oakland. But he looked more like he did early in the season against the Royals, with a piercing cutter and pinpoint control that kept Kansas City at bay all night.

"Whenever you get knocked around, it's not a good feeling. You never want that doubt to creep in that you're not able to get it done," Pettitte said. "Hopefully I can continue to get sharper and sharper."

Pettitte allowed only a run-scoring groundout by Lorenzo Cain and a solo homer by Billy Butler while improving to 15-3 in his career against the Royals. Kansas City hasn't beaten him in 14 starts dating to Sept. 4, 2000.

"I really don't think he's forgotten how to pitch, forgotten how to throw a cutter or any of that," Yankees manager Joe Girardi said. "I always say, when you're old or overweight - and you don't want to be both - and you're struggling, people are always going to be saying, 'Is something wrong? Is something wrong?' It's baseball. Everyone struggles."

Everyone except Mariano Rivera, it seems.

After David Robertson struck out the side in the eighth, Rivera worked around a two-out double by Salvador Perez for his 14th save. But it wasn't without some tension: Mike Moustakas hit a liner to right that landed just foul, and then scorched a pitch into the left-center field gap that Wells tracked down on the run to end the game.

It was Rivera's 14th save to start the season, and his 28th straight against the Royals. It came just over a year after he tore the ACL in his right knee while shagging balls in the Kauffman Stadium outfield during batting practice.

"I think Mo said it best, as an athlete, you can get hurt anywhere," Girardi said. "It just happened to be here. ... I'm sure it was good for him to get out there."

James Shields (2-3) was hurt by a throwing error on Moustakas at third base 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.

Shields wound up going eight innings for the third time in his last four outings, and each of those times he's failed to pick up the win. He dropped to 7-15 in his career against New York.

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 Girardi also ran onto the field to make sure Cano wouldn't be tossed from the game.