Atlanta had gone 24 innings without a run and was shut out in each of its past two games but had little difficulty springing to life against Milwaukee starter Alfredo Figaro.
The Braves opened the game with back-to-back singles by Jordan Schafer and Andrelton Simmons and loaded the bases with a one-out walk to Freddie Freeman. Figaro then fell behind 2-1 to McCann, who took a fastball to the opposite field for his eighth home run of the season, clearing the bases and giving the Braves a 4-0 lead.
Chris Johnson opened the second with a home run to right and Atlanta took a 6-0 lead on another top-of-the inning homer, this time by Schafer to start the fourth.
Simmons nearly added another home run, but his shot to straight-away center was hauled in at the wall by the Brewers' Carlos Gomez.
Gomez suffered a sprained left shoulder on the play and was forced to leave the game.
Figaro (1-2) never did find a rhythm. In 3 1/3 innings, he was charged with six runs, nine hits and three walks while striking out four.
Milwaukee's bullpen prevented any further damage, but the Brewers couldn't muster enough offense against Atlanta starter Paul Maholm to get back in it.
Maholm kept Milwaukee off the board through the first four innings, but the Brewers threatened in the fifth, drawing within two after a two-run single by Schafer and a two-run homer from Jonathan Lucroy.
Maholm (8-6) worked out of it, though, retiring Rickie Weeks and Yuniesky Betancourt to end the inning. Maholm finished his day giving up four runs, eight hits and a walk with three strikeouts.
Milwaukee loaded the bases against a trio of Braves relievers in the seventh, but pinch-hitter Juan Francisco popped out to McCann in foul territory to end the threat.
Dan Uggla gave Atlanta a three-run lead with an RBI single in the ninth.
Craig Kimbrel was perfect in the bottom of the inning to pick up his 21st save of the season.
NOTES: McCann's home run snapped a 24-inning scoreless streak for the Braves, who were shut out in their previous two games. ... Milwaukee had two pitchers out on rehab assignments on Sunday. RHP Marco Estrada gave up six runs and eight hits in 2 2/3 innings for Class A Wisconsin but RHP Hiram Burgos' scheduled start for Triple-A Nashville was on hold because of rain. ... Atlanta snapped an eight-game losing streak at Miller Park. ... Justin Upton was held out of the game with what Gonzalez called a sore right hand. Upton also did not play Saturday, and with an off-day Monday, Gonzalez hopes the three days of rest will be enough to have Upton ready on Tuesday when the Braves go to Kansas City.