Peter Moylan (2-1) recorded the final out in the sixth inning to receive the win. Mike Minor made the start for Atlanta and allowed one run on four hits and four walks while striking out five through 5 2/3 innings.
Brad Hand (1-7) lasted 5 1/3 innings, allowing three runs on seven hits and two walks. He struck out five in the loss.
Emilio Bonifacio knocked in the Marlins' lone run as the club had its four- game win streak snapped.
Donnie Murphy led off the fifth with a walk and advanced to third on Matt Dominguez's base hit up the middle. After Hand's sacrifice bunt moved Dominguez to second, Bonifacio slapped a single to right to bring home Murphy. An Omar Infante fly out to right and a Greg Dobbs liner to third stranded Dominguez at third.
John Buck worked a one-out walk and moved to second on a Bryan Petersen groundout in the sixth before Minor was pulled in favor of Moylan. Moylan caught Murphy looking on a 3-2 slider on the outside part of the plate to strand Buck and keep it a one-run game.
After a Uggla walk and a Matt Diaz single in the home half of the sixth, McCann crushed a 2-0 fastball over the wall in straight-away center field to put the Braves ahead, 3-1. Martin Prado followed with a base hit to left to knock Hand out of the game.
"It's always a team effort, but tonight I was trying to keep us in the game and hold that 1-0 lead," said Hand. "Just that 2-0 pitch to McCann -- the homer -- hurt me."
Ryan Webb took over next and allowed a single to right by Alex Gonzalez to put runners on the corners with one out. But the runners did not advance any further, as Webb struck out pinch-hitter Jason Heyward and induced a groundout by Michael Bourn to end the inning.
Uggla's three-run homer to left-center off of Brian Sanches in the seventh extended Atlanta's lead. Chipper Jones singled and Freddie Freeman walked prior to Uggla's 34th home run of the year, a new career-high.
"It's always good to top a feat that you've never done before. Hopefully I've got a few more in the tank before the end of the season," Uggla said about his homer.
Bourn's sacrifice fly in the eighth inning accounted for the final margin.
Florida released outfielder Mike Cameron on Tuesday...Hand took his fourth straight loss and has not earned a win since July 7...Atlanta leads the season series 10-4...Florida fell to 4-1 in a 10-day, 11-game road trip, while Atlanta improved to 1-1 on a six-game homestand.