Daisuke Matsuzaka worked a scoreless seventh inning in relief of Mets starter Jonathon Niese (3-4). Matsuzaka left Sunday's start against San Diego after one inning because of a severe upset stomach.
Wacha (5-5) gave up a run and five hits in six innings. Fanning Murphy preserved a 1-all tie, and he struck out Ruben Tejada with two on to end the sixth when the Cardinals led 3-1.
Wacha had a career-best 10 strikeouts on April 23 at New York but also had a career-worst five walks and lasted four innings in a loss.
Jon Jay's RBI triple with two outs in the fifth gave the Cardinals the lead, and Matt Holliday followed with an RBI double. Pinch-hitter Kolten Wong and Peter Bourjos added RBIs in the sixth, with both runs unearned after second baseman Murphy dropped Daniel Descalso's slicing, looping liner with a man on and two out.
"I just misplayed it," Murphy said.
Jay is batting .405 (15 for 37) in his last 12 games with four multi-hit games. It was his first RBI since May 30.
"He's on a real good run at the plate," Matheny said. "The way he's taking his at-bats ... we've seen this before. You just see him go, and it's fun to watch him go."
Niese allowed five runs, three earned, in six innings. The lefty has made 18 consecutive starts allowing three or fewer earned runs. It is the longest active streak in the majors, extending to last September, but he is just 5-5 during that span.
Wright entered the game 3 for 43 in his last 13 games. He leads the Mets with 34 RBIs, but has just four this month. The home run was his first on the road this season.
Duda hit his ninth homer of the season leading off the ninth against Jason Motte to make it 5-2, and Anthony Recker doubled, but Pat Neshek retired the next three for his second save in four chances.
NOTES: Lance Lynn (7-4, 3.16) faces Bartolo Colon (6-5, 4.15) in the series finale on Wednesday. Lynn worked eight scoreless innings in his last start. ... The Cardinals are 20-2 at home against NL East opponents the last two seasons. ... The attendance of 42,209 was St. Louis' 19th sellout in 35 home games.