A three-run homer by McCann highlighted a six-run fifth that put the Braves up 8-3. Milwaukee rallied, tying it on Corey Hart’s homer in the eighth.
McCann nearly had five hits, but second baseman Rickie Weeks made a diving grab on a blistering grounder. But Uggla, despite shattering his bat, slipped a slow roller through the drawn-in infield to bring home two runs, snapping an 8-all tie.
Jonny Venters (1-0) earned the win and Craig Kimbrel worked the ninth for his third save.
Francisco Rodriguez (0-1) took the loss.
The Braves won their third in a row after an 0-4 start, winning for the first time without Chipper Jones. Milwaukee has surrendered 18 runs the past two games, losing again despite a three-homer night.
Jones, who is retiring after the season, wasn’t able to play in his final home opener. The left knee that needed surgery in spring training flared up again after he came off the disabled list to lead the Braves to two consecutive wins in Houston.
Led by McCann and Uggla, the Braves had no trouble scoring runs off Randy Wolf and the Brewers.
McCann had an RBI double in the first to give the Braves a quick lead, then led them back after Jair Jurrjens surrendered three runs to the Brewers in the second. Uggla had a run-scoring double in the third after McCann kept the inning going with his second hit of the night, and Atlanta finished off Wolf with the fifth-inning outburst.
Speedy Michael Bourn started it with a triple to the gap, Freddie Freeman walked and McCann yanked his second homer of the season just inside the right-field foul pole. Wolf didn’t even turn around to look after he left the pitch hanging for McCann.
The Braves struck quickly for two more runs. Uggla singled and on the very next pitch, Matt Diaz went deep for his first homer since 2010. He took advantage of his chance after essentially replacing Jones in the lineup, starting in left field while Martin Prado moved to third base.
Milwaukee finally yanked Wolf after Jason Heyward followed with another hit. The left-hander was pounded for nine hits in 4-plus innings and gave up as many baserunners (13) as he got outs.
But the Brewers bounced back from the five-run deficit. Jurrjens had another shaky start, failing to get out of the sixth. He got the hook after giving up three consecutive hits to start the inning, including Hart’s two-run double that nearly cleared the wall. The ball struck the yellow line and ricocheted back on the field, though the umpires ducked into the dugout to make sure with help from replay.
There was no doubt about it the next time Hart came up in the seventh. After the Brewers closed to 8-7 with Ryan Braun’s two-run single off Eric O’Flaherty, Hart drove one into the seats for his fourth homer of the young season. O’Flaherty gave up three runs in the inning after surrendering just eight earned runs in all of 2011, when his ERA was below 1.00.
Milwaukee scored three runs in the second after Jurrjens retired the first two batters. Mat Gamel singled and former Braves shortstop Alex Gonzalez burned his old team with a two-run homer. George Kottaras went back-to-back, his third homer of the year putting the Brewers up 3-1.