San Diego had won a season-best four games in a row.
Freeman had an RBI single during a two-run first inning and drove in another run with a double in the third. Martin Prado produced what turned out to be the game-winning run with a solo homer in the sixth to give the Braves a 4-2 lead.
Tommy Hanson (6-4) got the win, allowing just three hits over six innings. He was touched for a two-run homer by Kyle Phillips in the second.
Kimbrel gave up a two-out single in the ninth, but struck out two to collect his 16th save. That ties the most by a rookie in National League history prior to the all-star break. Yhency Brazoban of the Los Angeles Dodgers set the record in 2005.
The loss went to Clayton Richard (2-6), who surrendered three runs on eight hits with four walks in 4 2/3 innings.