Duffy worked six innings of one-hit ball coming off a pair of poor outings and Alex Gordon homered to start a breakout three-run seventh for the Kansas City Royals in a 6-0 victory against the suddenly punchless defending NL champs on Monday night.
"I told him, 'You didn't throw a great game, you pitched a great game,' " manager Ned Yost said. "He was just right on top of his game."
The Royals had only two singles off Shelby Miller (6-5) in a game that had been scoreless before they opened the seventh with four consecutive hits. Gordon's fifth homer ended a 15-inning scoreless drought and Mike Moustakas capped the rally with a two-run double.
"I felt good early on," Miller said. "I felt like I just kind of gave the game away in the seventh. It's just frustrating."
Matt Holliday had two singles and a walk for the Cardinals, who have been shut out in back-to-back games at home and have single-digit hit totals the past four games. They're only 2-6 with one game to go on a nine-game home stand.
"It's a long season. You're going to have those times," said Yadier Molina, who is 2 for 21 during the home stand. "We know we're good hitters."
Between Holliday's single with two outs in the first and his single leading off the seventh, the Cardinals were 0 for 17 with a walk -- also by Holliday in the fourth.
Coming off an 8-0 loss to San Francisco on Sunday, the Cardinals were shut out two successive times at home for the first time since 1992 against Pittsburgh, and by six or more runs at home in back-to-back games since dropping a doubleheader to the Reds in 1937.
"We've had lots of meetings, we've had the conversations we needed to have," manager Mike Matheny said. "What we're doing right now isn't going to work and they know that. We all do."
Duffy (3-5) struck out five and walked one, rebounding from consecutive losses in which he surrendered 10 earned runs in 10 innings. He has a one-hit start over six or more innings each of the past three seasons.
"Physically, I felt really good," Duffy said. "I still didn't have as much behind the ball as I normally do, but I felt fine just like last time."
Rare backing from the offense made everything feel a lot better. The Royals totaled three runs while Duffy was in the game his first five starts over 27 innings.
"Sometimes it's just the luck of the draw," Duffy said. "The guys swing the sticks really well."
Three relievers completed a three-hitter.
The Royals advanced one runner to second base before Gordon led off the seventh with his fifth homer, a drive over the Cardinals' bullpen in right field.
"It was awesome," Moustakas said. "It got a good pitch to hit and he crushed it and it kind of loosened us up in the dugout."
Lorenzo Cain beat out an infield hit unsuccessfully challenged by the Cardinals and Miller threw his second wild pitch of the inning after a visit from pitching coach Derek Lilliquist, setting up Moustakas' double.
Kansas City added three in the eighth. Cardinals rookie center fielder Randal Grichuk struck out three times and whiffed fielding the ball on the RBI single by Salvador Perez, allowing a second run to score.
Holliday has reached safely in all 29 home games. .. The Cardinals anticipate pitcher Lance Lynn, who underwent medical tests after tweaking his right knee Sunday, will make his next start. ... Cardinals pitching prospect Marco Gonzales, a first-round pick last year, and teammates from Double-A Springfield attended the game on a day off. ... The Royals claimed RHP Blake Wood on waivers from Cleveland and assigned him to Triple-A Omaha, making room on the 40-man roster by transferring RHP Luke Hochevar (elbow surgery) from the 15-day DL to the 60-day DL. Kansas City also purchased the contract of RHP Wilking Rodriguez, optioned RHP Louis Coleman to Omaha and designed LHP Justin Marks for assignment. ... The Royals are 5-1 in interleague play.