Haren started the frame by yielding singles to Yadier Molina and Brendan Ryan. Jaime Garcia came in to run for Molina and Heilman relieved Haren. Garcia scored when pinch-hitter Wainwright reached on Heilman's throwing error, pulling the Cards to within a run.
One out later, Skip Schumaker grounded sharply to first baseman LaRoche, who bobbled the ball as Ryan headed to the plate and then threw wildly to catcher Miguel Montero, allowing Wainwright to come in with the game-winning run.
Jason Motte (3-2) earned the win with 1 1/3 innings of one-run relief. Schumaker and Felipe Lopez each had two hits and an RBI for St. Louis.
LaRoche, Mark Reynolds and Haren socked homers in Arizona's loss.