Updated

When things have gone poorly for the Kansas City Royals this season, the attention invariably has fallen on a patchwork starting rotation that seems to be trying to soak up innings.

After a second consecutive dud against the St. Louis Cardinals on Saturday, manager Ned Yost was just as perturbed with the Royals' scuffling offense.

Alex Gordon and Mike Moustakas had two of the Royals' six hits against stingy starter Adam Wainwright and the St. Louis bullpen, but it wasn't nearly enough in an 8-2 defeat. Matt Holliday matched them by himself with four this, and Allen Craig had a two-run homer for the Cardinals.

"We're just not swinging well right now," Yost said. "We're swinging more at pitchers' pitches, I think at times. Putting ourselves in a position where we're not getting good swings on good pitches. Those things kind of go in cycles."

The Cardinals are certainly riding one of those cycles in the other direction.

They came into the series struggling to score, but they've broken out of those doldrums in style. They matched a season high with 17 hits on Friday night en route to an 11-4 victory, and were nearly as proficient at the plate during the Saturday matinee.

All to the delight of a crowd of 37,240 that was primarily dressed in red.

"When you have a lineup like we have, just keep us in the game," said Wainwright (6-7), who allowed two runs on four hits and two walks over seven sharp innings.

"That was a pretty dominant outing," Matheny said. "You can tell he's in a good place."

The Cardinals certainly feel like they're in a good place in Kansas City, where they improved to 26-15 in franchise history, and took a 3-2 lead in the season series.

"Everyone's working their tail off," Royals manager Ned Yost said. "They're doing what they need to do in terms of their work and preparation. They just need to take it to the field."

St. Louis started its offensive onslaught in the third inning against Luis Mendoza (2-4), when Rafael Furcal worked a two-out walk and back-to-back singles by Jon Jay and Holliday made it 1-0.

Mendoza eventually escaped the jam, but everything fell apart in the fifth.

Daniel Descalso started a run of five straight singles in the fifth for St. Louis, and RBI base hits by Jay and Holliday knocked Mendoza from the game. Kelvin Herrera came in and promptly gave up another RBI single to Carlos Beltran, staking the Cardinals to a 4-0 lead.

"I think I struggled because maybe they were making adjustments to my sinker," Mendoza said.

Furcal added another run with a single in the sixth, and even though Kansas City got two back in the bottom half on Alex Gordon's run-scoring triple and Yuniesky Betancourt's RBI groundout, St. Louis wasted little time in matching them with two more runs in the seventh inning.

That's when Holliday doubled off reliever Greg Holland, and Craig belted a full-count pitch over the bullpen in left field for his ninth homer of the season.

All the offense sure took the pressure off Wainwright.

The former 20-game winner spent most of the afternoon looking like the guy who finished second in the 2010 Cy Young voting — before he needed season-ending Tommy John surgery last February.

Wainwright erased Gordon's bunt single in the first by inducing a double play, and then set Kansas City down in order the next two innings. He didn't allow a runner to reach second base until giving up two runs in the sixth, but he bounced back to work a scoreless seventh inning.

"He comes in hard with that cutter and mixes it up with his off-speed stuff," said Royals first baseman Eric Hosmer, who went 0 for 4. "He was working both sides of the plate really good."

NOTES: Hall of Fame golfer Tom Watson threw out the first pitch. ... Royals C Salvador Perez got the day off after his return the previous night from a torn knee ligament. Manager Ned Yost expects him to catch Sunday. ... RHP Lance Lynn will pitch the series finale Sunday for St. Louis. LHP Jonathan Sanchez will start for Kansas City.