Tyler O'Neill hit a two-run homer and Jordan Walker went 3-for-4 with a solo homer, an RBI double and three runs for the Cardinals (60-78), who won for the fourth time in the past six games.
Ozzie Albies, Austin Riley, Matt Olson and Marcell Ozuna hit solo homers for the Braves (90-47), who have lost back-to-back games after winning 10 of the previous 11.
Cardinals starting pitcher Miles Mikolas (7-10) earned his first victory since July 17. He allowed three runs on eight hits in 6 2/3 innings, walking two and striking out two.
Braves starting pitcher Michael Soroka (2-2) struggled in his return to the big leagues. He fanned six batters in three innings, but he allowed five runs on four hits and a walk in his first game back from Triple-A Gwinnett.
Atlanta broke on top 1-0 on Albies' first-inning homer.
The Cardinals responded by taking a 3-1 in the second inning. Nolan Arenado hit a single, moved up on Willson Contreras' sacrifice bunt and scored on Walker's bloop double. O'Neill followed with his homer.
St. Louis made it 5-1 in the third inning when Paul Goldschmidt walked and Gorman hit his first homer of the night.
Walker's long ball in the fourth inning increased the margin to 6-1.
The Cardinals pushed their advantage to 9-1 in the sixth inning. Singles by Walker and O'Neill, Tommy Edman's RBI double, Masyn Winn's run-scoring fielder's choice grounder and Goldschmidt's RBI single did the damage.
The Braves got two runs back in the bottom of the inning on consecutive homers by Riley and Olson. By socking his 45th home run of the year, Olson took sole possession of the major league lead.
Atlanta cut the deficit to 9-6 in the eighth inning. Ozuna homered, Eddie Rosario walked, Michael Harris II hit a single, Orlando Arcia hit a RBI double and Ronald Acuna Jr. added a run-scoring groundout.
Gorman's second homer made it 10-6 in the ninth inning.
—Field Level Media