Atlanta, which scored three runs in the ninth to tie it, has won 12 of 16 and captured its fifth successive series by winning two of three from St. Louis.
Freddie Freeman reached on an infield single with one out and moved to second on a walk to Josh Donaldson and advanced to third on Nick Markakis‘ fly ball to center field. After Austin Riley was intentionally walked to load the bases, McCann drew a five-pitch walk from Tyler Webb (0-1) that brought in Freeman with the go-ahead run.
Ronald Acuna Jr. had two hits for Atlanta.
The Cardinals have lost four of six and have not won back-to-back games since May 1.
Donaldson, Riley and Ozzie Albies had run-scoring hits in the ninth inning with Albies tying it with a single off Andrew Miller. Donaldson and Riley’s hits came off closer Jordan Hicks.
St. Louis starter Jack Flaherty gave up three hits and struck out seven in a 91-pitch outing over six scoreless innings.
The Cardinals scored two unearned runs against Atlanta starter Julio Teheran in the fourth. Kolten Wong reached on a two-base error by Riley, who dropped a line drive in left field. Harrison Bader followed with a run-scoring single to right. He eventually scored on a wild throw to the plate by Donaldson at third.
Yadier Molina pushed the lead to 3-0 with a sacrifice fly in the fifth.
Teheran gave up just two hits and three runs — one earned — in five innings. He walked four and struck out one.
The Cardinals announced that rookie LHP Genesis Cabrera will start on Wednesday at Philadelphia. He is replacing RHP Michael Wacha, who has been sent to the bullpen. Cabrera was 2-3 with a 6.35 ERA in seven starts at Triple-A Memphis.
Braves: Optioned RHP Chad Sobotka to Triple-A Gwinnett. Sobotka had been on the injured list since April 29 with a left abdominal strain.
Braves: LHP Max Fried (7-2, 2.88) will start the opener of a two-game set at home against Washington on Tuesday. He will be opposed by RHP Stephen Strasburg (4-3, 3.25). Fried has won his last three starts and allowed five earned runs over 17 innings.
Cardinals: RHP Adam Wainwright (4-4, 4.82) will start against Philadelphia RHP Nick Pivetta (2-1, 8.35) in the first of a three-game series on Tuesday in Philadelphia. Wainwright is 7-2 with a 2.90 ERA in 13 career starts against the Phillies.
Source: Fox Sports