The Cardinals took a 1-0 lead on Wainwright's RBI single in the second off Mets starter Jeremy Hefner. David Freese's solo homer in the fourth made it 2-0.
Hefner was otherwise solid, striking out four over five innings with three walks. It was not until the eighth inning, facing Mets reliever Brandon Lyon, that Allen Craig singled home Matt Holliday to reclaim the lead for St. Louis.
"I feel good physically," Hefner said. "I wasn't as sharp as I'd like to be today. They're a real aggressive team so I tried to throw a few more offspeed pitches early in the count, and that got me behind in the count because I wasn't getting them over for strikes. But overall I was pleased with the outing. I still have a lot of stuff to work on and I'll continue to do that."
With Johan Santana battling shoulder weakness and still not close to appearing in a game, Hefner will begin the regular season in the starting rotation. That will give him a measure of stability he lacked last year, when many of Hefner's 13 starts came on either short rest or short notice.
As long as Santana remains sidelined, Hefner will start every fifth game.
"That's what I'm used to," he said. "That's what I'm comfortable with. Having that stability of knowing every five days you're going to get full rest, you're going to get a full bullpen, that type of thing, it's refreshing."
Lucas Duda went 2-for-2 with a double. Scott Rice and Bobby Parnell each pitched a perfect inning in relief.
Up next: Jon Niese will look to stretch out to 100 pitches as he makes his penultimate Grapefruit League start in Friday's 7:05 p.m. ET game against the Marlins. Niese will likely back off his workload in his final start in preparation for his Opening Day assignment on April 1. Friday's outing will give him a chance to go as deep in a game as he has all spring. The game is available live on Gameday Audio.
Anthony DiComo is a reporter for MLB.com. Follow him on Twitter @AnthonyDicomo. This story was not subject to the approval of Major League Baseball or its clubs.