Atlanta won its third straight and the Diamondbacks, after capturing seven of their first 10 this season, have lost three in a row.
Freeman hit a two-run homer in the first, but Arizona came back to tie it at 2-2 through five innings.
The Braves then scored eight times over the next three innings, getting a two-run single from Juan Francisco during a three-run sixth and another two-run blast from Freeman in the seventh.
Martin Prado produced a two-run double in the eighth and scored on another double by Freeman.
Mike Minor (2-1) turned in eight innings to get the win. Only one of the two runs he allowed was earned and he gave up five hits while striking out nine.
Josh Collmenter (0-1) surrendered four runs on six hits in 5 1/3 to take the loss.