Allen Craig doubled and drove in three runs for the Cardinals, who knocked around James McDonald (1-2) with a seven-run second inning. McDonald gave up eight runs, three earned, and walked two in 1 1-3 innings, the shortest start of his career.
Lance Lynn (2-0) labored through five innings to get the win. Lynn allowed four runs, walking three and striking out four.
McDonald began the season hoping to recapture the form he showed in the first half of 2012, when he nearly made the All-Star team. He pitched well in his first start and then overcame a shaky first inning in Arizona last week - when he allowed four runs before getting three outs - to pick up the win.
The right-hander again 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.
Lynn didn't exactly sparkle. Staked to a 10-1 lead after a two-run double by Holliday off reliever Bryan Morris in the third, Lynn seemed uncomfortable. 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 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.
Still, 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.
NOTES: Pittsburgh LHP Francisco Liriano pitched three shutout innings for Class-A Bradenton, striking out six. Liriano is recovering from a broken right (non-throwing) arm. ... St. Louis manager Mike 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.
Link to box score: St. Louis 10 at Pittsburgh 6
Link to game discussion at The Cardinal Nation message board