Donovan Solano's first two Major League homers had looked like giving the Marlins the win, but Freeman smacked a two-run shot off Mike Dunn to turn the game around in the ninth.
It means the Braves are assured of at least a National League Wild Card spot.
They also closed to within 4 1/2 games of the NL East-leading Washington Nationals, who lost 6-3 to the Philadelphia Phillies.
Darin Ruf got his first career homer for the Phillies.
The St Louis Cardinals closed in on the second Wild Card place with a 4-0 win over the Houston Astros on the back of Jaime Garcia's seven scoreless innings.
Anibal Sanchez threw a three-hit shut-out as the Detroit Tigers beat the Kansas City Royals 2-0 to move into a tie for first place with the Chicago White Sox in the American League Central.
Sanchez struck out 10 and walked one, while Delmon Young led the Tigers' offence with two hits and an RBI.
The White Sox, meanwhile, suffered a 4-3 loss to the Cleveland Indians, who got a big outing from Russ Canzler with three hits, two runs, a homer and an RBI.
The Minnesota Twins scored four times in the seventh inning as they rallied for a 5-4 win and prevented the New York Yankees stretching their lead atop the AL East.
Yankees started Phil Hughes cruised through six innings but in the end was charged with four runs on six hits across 6 2/3 innings - and the loss - as he ran into trouble in the seventh.
With the Baltimore Orioles also losing, 4-0 to the Toronto Blue Jays, the Yankees' lead remained at 1 1/2 games.
The Oakland Athletics beat the Texas Rangers 3-2 thanks to George Kottaras' solo shot in the 10th, putting the A's half a game back on the Orioles in the Wild Card race.
David Price reached 19 wins on the season as he dominated the Boston Red Sox, fanning 13 in nine innings of two-run ball as the Tampa Bay Rays won 5-2.
Johnny Cueto also got his 19th win of the season, allowing two runs in seven innings to help the Cincinnati Reds see off the Milwaukee Brewers 4-2.
Pedro Alvarez had four RBI, including a three-run homer, as the Pittsburgh Pirates beat the New York Mets 10-6, while the Colorado Rockies were 10-5 winners over the Chicago Cubs in a game shortened to seven innings.
Zack Greinke struck out 13 in five innings as the Los Angeles Angels overcame the Seattle Mariners 5-4, the Arizona Diamondbacks beat the San Francisco Giants 7-2 and the San Diego Padres were 2-1 winners over the Los Angeles Dodgers.