The Braves (48-38) have won 10 of 11 to move 10 games over .500 for the first time since April 29. They lead the NL East by 1½ games.
Santana (7-5) gave up six hits and two runs with one walk and six strikeouts in 7 1/3 innings.
Arizona began the night tied with Houston for most losses in the majors with 50. The Diamondbacks have lost seven of 11.
After earning three victories from June 20-28, Arizona’s Josh Collmenter (7-5) allowed five runs, 11 hits, one walk, and struck out three in six-plus innings.
The Braves made it 2-0 in the first on Freeman’s RBI single and Heyward’s RBI groundout.
Atlanta went up 4-1 in the third on Andrelton Simmons bases-loaded RBI single and Justin Upton’s RBI walk, but Collmenter stranded the bases loaded when Jason Heyward popped out.
Collmenter’s night ended after Simmons led off the seventh with a double. Oliver Perez, the next Arizona pitcher, allowed another RBI single by Freeman to make it 5-1.
Santana seemed in sync most of the night, but that hasn’t been the case over the last few weeks. After winning against the Cubs on May 10, Santana went 1-5 with a 5.96 ERA over his next eight starts before earning a 10-3 victory last Saturday at Philadelphia.
Santana retired 11 straight before Didi Gregorius singled to begin the eighth. He came out one out later when Ender Inciarte singled.
After Luis Avilan retired David Peralta on an RBI forceout, Jordan Walden gave up a double to Paul Goldschmidt before striking out Miguel Montero to end the threat.
In the ninth, Craig Kimbrel struck out Martin Prado and retired Gerardo Parra on a groundout, and Nick Ahmed on a flyout for his 27th save in 31 chances.
Arizona cut the lead to 2-1 in the second when Prado led off with a single, moved to second and third on groundouts and scored on Santana’s wild pitch.
Freeman, who went 2-for-4, is hitting .365 over his last 19 games.
NOTES: The Braves announced a sellout with a season-high crowd of 48,815. ... Atlanta’s bullpen has a 0.42 ERA over a span of 21 2/3 innings during the eight-game winning streak. ... Peralta went 2-for-4 and is hitting .406 over his last nine games. ... Perez had stranded 10 straight inherited runners before Freeman drove in Simmons.