Led by two-run doubles from Jon Jay and Allen Craig, the Cardinals chased McDonald with a seven-run second and then held on for a 10-6 victory Monday night.
"That whole inning was impressive, the kind of at-bats they were grinding out," St. Louis manager Mike Matheny said.
Lance Lynn (2-0) labored through five innings despite being staked to an early 10-1 lead. He gave up four runs, walked three and struck out four while needing 99 pitches to get 15 outs.
|More on Cardinals-Pirates|
|More MLB coverage|
"I wish I could have went deeper, but when you have a 10-run lead you're just trying to get quick outs and not have long innings and I wasn't able to do that," Lynn said. "That was the most frustrating part."
Jay finished with two hits and Matt Holliday added two hits and two RBI as the Cardinals ended Pittsburgh's three-game winning streak by roughing up McDonald (1-2), who entered 4-1 with a 2.27 ERA against St. Louis.
Those numbers quickly ballooned after the second-inning outburst.
McDonald struggled to get out of the first inning, allowing St. Louis to grab an early 1-0 lead, an advantage that could have been much larger if the Cardinals hadn't run themselves into unnecessary trouble.
The Pirates bounced back to tie it in the bottom half on a run-scoring single by Garrett Jones, only this time McDonald was unable to collect himself on a night when his velocity and command seemed off. Normally his fastball hovers in the 93-94 mph range but only one of his 46 pitches reached 92 mph, and the Cardinals pounced.
Pete Kozma led off the second with a ground-rule double, and things kept getting worse for the Pirates. Jay smacked a two-run double and a rare throwing error by shortstop Clint Barmes allowed the Cardinals to extend the inning.
St. Louis didn't let the miscue go to waste, adding five more runs -- including a two-run double by Craig -- before Pirates manager Clint Hurdle mercifully pulled McDonald, who walked off the mound to a chorus of boos.
"I think we really feed off each other," Craig said. "When one guy has a good at-bat and hits a ball hard I think the next guy, it boosts his confidence and it goes from there."
Lynn didn't exactly sparkle. Handed a huge lead after a two-run double by Holliday off reliever Bryan Morris in the third, Lynn seemed uncomfortable. Neil Walker hit his first homer of the season to help get Pittsburgh within six runs, and the Pirates put two runners on in both the fourth and the fifth but couldn't quite chase Lynn.
The right-hander needed 99 pitches -- and a pep talk in the fifth from pitching coach Derek Lilliquist -- to get his way through 15 outs. It was a rare so-so performance by a St. Louis starter. The Cardinals began the three-game series with the best ERA by their starters (1.99) in baseball. St. Louis tossed 39 consecutive shutout innings last week before losing to Milwaukee in 10 innings on Sunday to snap a four-game winning streak.
"I've got to be better," Lynn said. "I got into a situation where I was just trying to attack them with heaters and I got myself into trouble and got my pitch count up."
McDonald would have loved that problem. Instead, a pitcher who flirted with making the All-Star team last year could be in some serious trouble. He declined to talk about his health afterward but Hurdle acknowledged McDonald certainly seems off.
"He just couldn't get the ball where he wanted it, couldn't repeat it and it was hard," Hurdle said. "Too many pitches up and over the plate to a good-hitting team."
Pittsburgh kept trying to rally but the first-place Cardinals managed to avoid their second losing skid of the season.
The Pirates scored two and had two on with one out in the eighth against reliever Marc Rzepczynski, but Travis Snider meekly grounded out to the catcher and Andrew McCutchen followed with a chopper to third to end the threat as the Pirates couldn't duplicate their comeback victory over Cincinnati on Sunday, when they spotted the Reds a 5-0 lead before rallying for a 10-7 win.
"We had the tying run on deck after being down 10-1," Hurdle said. "I like the way we're playing. The hiccups we've had off the mound have been challenging but we've been able to handle them so far."
Pittsburgh LHP Francisco Liriano pitched three shutout innings for Class-A Bradenton, striking out six. Liriano is recovering from a broken right arm. ... Matheny said the team will stick with a closer-by-committee approach as it searches for someone to take over for injured Jason Motte. ... The Pirates moved catcher Russell Martin to third base in the fifth inning, his first appearance at third since June 2011. ... Jake Westbrook (1-1, 0.00 ERA) starts for St. Louis against Jonathan Sanchez (0-2, 12.96) on Tuesday night.