KANSAS CITY — Danny Duffy knew his stumbling Royals desperately needed a win, so the left-hander showed up at Kauffman Stadium on Thursday night and began telling jokes and getting people laughing.
Anything to loosen them up.
Turned out Duffy had the last laugh.
He tossed seven innings of three-hit ball, Mike Moustakas hit a three-run homer and the Royals beat the New York Yankees 5-1 to avoid a three-game sweep.
"We've been in a little bit of a rut," said Duffy (3-3), who struck out a season-best 10 while walking two and earning his first win since April 14. "I just wanted to get positive vibes going."
Duffy, who had been 0-3 with two no-decisions in his last five starts, was lifted after 108 pitches. Mike Minor handled the eighth and Kelvin Herrera surrendered a run in the ninth.
"Danny was just on the attack all night," Royals manager Ned Yost said. "He kept his pitch count down and really gave us seven strong innings."
The Royals scored twice in the second off Jordan Montgomery (2-3) before Moustakas deposited his pitch into the bullpen in right in the fifth inning to break the game open.
Montgomery surrendered four hits and three walks over five innings.
"I'm just a 24-year-old with eight starts in my big league career and I'm trying to learn," he said. "I know the fans expect more from me and I expect more from myself. I've got to do better."
The Royals jumped ahead in the second thanks in part to the Yankees' inability to turn a double play. They had runners on first and second when Jorge Soler sent a grounder to third base. The Yankees got the force at second but couldn't convert the relay, keeping the inning alive.
Whit Merrifield and Drew Butera followed with RBI singles for a 2-0 lead.
Montgomery proceeded to set down the next seven batters he faced before Merrifield's leadoff single in the fifth. Butera grounded into a fielder's choice, Alcides Escobar walked and Moustakas sent the first pitch he saw into the bullpen in right for a three-run homer.
Meanwhile, Duffy was dodging all sorts of trouble.
After retiring his first nine batters, six by strikeout, Jacoby Ellsbury reached base with a well-timed bunt. He was initially called out but replays showed first baseman Eric Hosmer pulled his foot off the bag, and the call was overturned with Ellsbury getting a hit.
Duffy walked Matt Holliday later in the inning before escaping the jam.
"When you see a slider, you can always see the spin, but on his slider I didn't see," Yankees second baseman Starlin Castro said. "He don't make too many mistakes."
The left-hander also put two runners aboard leading off the fifth, one on an error by Moustakas and the other with a walk. But a double play and strikeout ended that inning without a run.
Duffy stranded a runner on third by striking out Aaron Hicks to end his night.
"You're going to run into guys that have got good stuff and they're on. On certain nights it's going to be tough to put a lot up against them," Yankees manager Joe Girardi said. "We had a couple of chances, but weren't able to get hits in those chances. Duffy did a really good job."
STATS AND STREAKS
The Yankees were 0 for 7 with runners in scoring position. New York had scored at least seven runs in each of its last four games. The Royals avoided their first home sweep by the Yankees since May 10-12, 2013. Kansas City committed two errors for the first time this season.
Alex Rodriguez made his color commentating debut as Fox Sports broadcast the game. The former Yankees slugger chatted before the game with Girardi, who spent time broadcasting before becoming a manager. "The biggest thing as a broadcaster is you have to tell the story through your eyes. Don't try to be something you're not," Girardi said. "The way you understood the game is the way you can probably tell the story the best."
Yankees RHP Luis Severino will start Friday night's series opener at Tampa Bay. The 23-year-old Severino has pitched well enough for the Yankees to win three of his last four starts.
Royals RHP Nate Karns takes the mound as Kansas City begins a 10-game trip in Minnesota, where they were swept to start the season. The Royals were also swept by the Twins in a rain-shortened two-game set at Kauffman Stadium. Karns had a career-high 12 strikeouts against Baltimore his last time out.