The Dodgers trailed twice in their first meeting with the Braves since eliminating them in a National League division series last season.
Puig came up a home run short of hitting for the cycle, lifting his team-leading average to .317 despite getting hit on the head by the ball while sliding head-first in the seventh. He struck out in his final at-bat.
That set the stage for outfielders Crawford and Kemp to put the Dodgers ahead in the seventh.
Crawford had an RBI groundout to second base and Kemp followed with his second two-run shot over the center field fence for a 7-4 lead. Gonzalez doubled in another run in the eighth.
Kemp's first two-run shot in the second briefly gave the Dodgers a 2-1 lead.
Freddie Freeman, who went 2 for 4, put Atlanta back in front 3-2 in the third with his own two-run homer. Tommy La Stella was 3 for 4 with a run scored as the Braves' three-game winning streak ended.
Anthony Varvaro (3-3) took the loss, giving up three runs and four hits in one relief inning.
Dodgers starter Josh Beckett struggled through another outing. The right-hander gave up four runs and nine hits in 4 1-3 innings, struck out two and walked one in dropping to 0-5 in his last six home starts.
Braves starter Aaron Harang faced the Dodgers for the first time since pitching for them in 2012. The right-hander yielded four runs and nine hits in six innings, struck out three and walked one after going 4-0 in his previous six outings.
To read more on the Dodgers big win over the Braves, visit FOXSports.com