Evan Gattis also homered twice and Uggla drove in five runs as the Braves won their fourth in a row. The teams combined for five homers and 12 runs in the final two innings.
Gattis, Uggla and Andrelton Simmons hit consecutive homers in the eighth that put Atlanta ahead 5-1.
Domonic Brown’s three-run homer capped a five-run bottom of the eighth that gave the Phillies a 6-5 lead.
But the Braves rallied against Jake Diekman (1-1). B.J. Upton walked, Freddie Freeman reached on a grounder when second baseman Chase Utley made a questionable decision to try for a forceout and Justin Upton walked to load the bases with no outs.
After Gattis struck out swinging at a 98 mph fastball, Uggla drove an 0-2 pitch from Diekman deep into the seats in left.
Freeman went 0 for 4, ending his nine-game hitting streak.
Philadelphia’s regular closer, Jonathan Papelbon, wasn’t used because he had pitched three consecutive days.
Luis Avilan (3-1) wound up with the win and David Carpenter got his first save. Braves closer Craig Kimbrel was also unavailable after pitching in three of the past four games.
Ryan Howard homered and Marlon Byrd drove in two runs for Philadelphia. Utley had two hits, and is batting .489 this season.
Braves starter Ervin Santana matched his career high with 11 strikeouts. He pitched six innings and gave up one run and four hits.
Gattis put Atlanta in front 2-1 with a two-run homer in the sixth off Roberto Hernandez. After the Braves hit three more homers in the eighth, the Phillies loaded the bases with no outs against Avilan.
Howard struck out looking, but Byrd hit a two-run single that made it 5-3. Brown gave the Philadelphia the lead with his first homer since last Aug. 14.
The Upton brothers didn’t get any hits, but they almost hit each other. Justin sent a liner that nearly took out B.J. as he led off third base. B.J. had to dive out of the way, got up slowly and stared at Justin in the batter’s box in mock disgust.