Atlanta let an early four-run lead get away, but battled back to win its second straight on the heels of an eight-game losing streak.
Tyler Greene's two-run single highlighted a four-run St. Louis sixth that lifted the Cardinals into a 5-5 tie.
The Braves responded in the bottom of the inning when Jose Constanza reached on a leadoff, infield single and scored on Wilson's double to right. Brian McCann and Dan Uggla produced run-scoring singles later in the inning.
Both sides scored twice in the eighth, with only one hit in the entire inning leaving the infield, and Craig Kimbrel survived a two-out fielding error in the ninth to collect his 15th save.
Reliever Mark Rzepczynski (0-3) gave up the three runs in the Atlanta sixth to take the loss.