Ricky Nolasco allowed an unearned run over six innings and the Marlins took advantage of some shoddy St. Louis defense to claim a 3-2 victory in the opener of a three-game set Friday at Busch Stadium.
Nolasco (8-6) scattered nine hits and walked one while striking out four to earn the victory. Mike Dunn and Steve Cishek combined to keep the Cardinals scoreless after the sixth and Heath Bell worked around some trouble in the ninth to record his 19th save of the season.
Logan Morrison crushed a solo home run and Jose Reyes added an RBI single as the Marlins won their third straight game.
"We're feeling good about ourselves. Even in the games we've lost we've been real close, so it's a good sign going into the break," said Nolasco. "We've got two more and then, hopefully, it keeps carrying over."
Jake Westbrook (7-7) absorbed the loss after giving up two runs -- one earned -- on five hits and two walks over 6 2/3 innings. The Cardinals' defense committed three costly errors in the setback, just their second in their last six games.
"We had them early, we just came up short," said Cardinals manager Mike Matheny. "That was a tough loss."
St. Louis opened the scoring in the second as Allen Craig singled to deep shortstop and moved to second as Reyes' throw to first was wild. David Freese then ripped a grounder down the third-base line that bounced off the bag and caromed into left, plating Craig from second to give the home team a 1-0 lead.
Freese then committed a pair of errors in the sixth as Miami tied the game. Reyes reached first on Freese's throwing error to start the frame but was wiped off the basepaths on Hanley Ramirez's fielder's choice.
Carlos Lee then scorched a grounder to third that Freese was unable to handle and the ball trickled into the left-field corner, allowing Ramirez to score from first to knot the game at 1-1.
"David's been playing great defense, there was just some tough plays at him," said Matheny about Freese's errors. "Every once in a while they don't happen."
The Marlins took the lead in their next at-bat as Greg Dobbs singled to start the frame, moved to second on a sacrifice bunt and found third on John Buck's fly-out.
After pinch-hitter Austin Kearns walked, Reyes was credited with a single when he slapped a grounder to the left of the mound. Dobbs scored easily on the play, while Reyes moved to second as Westbrook fielded the ball cleanly but his off-balance throw to first was high.
After being hit by a pitch in his previous two at-bats, Morrison exacted some revenge in the eighth by crushing a one-out homer into the right-field seats to give the Marlins some breathing room with a 3-1 advantage.
St. Louis mounted a charge in the ninth off Bell as Skip Schumaker doubled, moved to third on a groundout and scored on Rafael Furcal's infield single.
Furcal appeared to injury himself running to first and was replaced by pinch- runner Tyler Greene, who was taken off the basepaths on Jon Jay's fielder's choice.
Bell then hit Matt Holliday with a pitch, but got Carlos Beltran to ground out to second to end the game.
Nolasco earned his first win in eight career starts against the Cardinals...Miami outfielder Giancarlo Stanton came on as a pinch-hitter in the ninth and struck out. He had missed the last three games with a sore right knee...Holliday was named to the All-Star team on Friday to replace catcher Yadier Molina, who was placed on the bereavement list. Catcher Bryan Anderson was recalled from Triple-A Memphis to fill Molina's spot on the Cardinals active roster.