Matt Holliday's 432-foot home run off Kris Medlen (10-12) snapped a sixth-inning tie for St. Louis, which took the first two games of a four-game set against the NL East leaders.
Having already thrown 101 pitches, Wainwright was allowed to bat with the one out and the bases loaded in the seventh inning and hit a long sacrifice fly off Scott Downs for his third RBI of the season to make it 3-1. He then retired the side in order in the eighth.
Medlen singled to lead off the sixth and scored on Freddie Freeman's second hit of the game and retired 12 in a row at one point. But he allowed Holliday's 17th homer on a liner deep into the left field stands. He's lost his last two times out, including a relief appearance in a 15-inning game.
The Cardinals lost three in a row at Atlanta to start a seven-game losing streak in late July that knocked them out of the Central lead and entered the night a game behind Pittsburgh. Wainwright (15-7) took one of the losses in that series, but the Brunswick, Ga., native is 7-2 against the Braves.
Wainwright allowed a run on six hits with no walks and nine strikeouts, passing injured teammate Chris Carpenter for fourth on the franchise career list, and he has 16 career complete games. He's worked seven or more innings seven straight starts and retired 10 in a row at one point.
He even got an assist from his manager. Mike Matheny, a former four-time Gold Glove catcher, took the warmup tosses from Wainwright before the ninth.
Yadier Molina had three hits with a pair of doubles to raise his NL-leading average to .337, five points ahead of the Braves' Chris Johnson, who had a pair of singles.
The Braves' Justin Upton was ejected in the sixth for arguing with home plate umpire Paul Nauert after a groundout, perhaps about a called third strike the previous at-bat.
NOTES: Braves SS Andrelton Simmons made an outstanding sliding catch on Kolten Wong's foul popup in the second. ... B.J. Upton snapped an 0-for-25 slump with a single in the second. ... Wainwright tied his career best for complete games in a season, also throwing five in 2010. He threw a season-high 128 pitches.
Link to box score: St. Louis 3, Atlanta 1
Link to game discussion at The Cardinal Nation message board
Adam Wainwright on getting the win over Atlanta.