The Braves were 0-6 against American League teams before taking advantage of four runs in the first on the two homers off C.J. Wilson (7-6), including a three-run shot by Gattis.
Aaron Harang (5-5) allowed one run in six innings to end a streak of five consecutive starts without a win.
Braves right fielder Jason Heyward left the game with a bruised right hand after being hit by a pitch from Wilson in the first inning. The Braves said X-rays were negative and Heyward is day to day.
The Angels trailed 4-1 before Albert Pujols had a two-run single off Shae Simmons in the eighth. Craig Kimbrel struck out Raul Ibanez to cap a perfect ninth inning for his 19th save.
Harang, 36, earned his first win in eight career starts against the Angels. He was 0-4 with a 10.48 ERA in four 2013 starts for Seattle against the Angels.
Harang was a combined 5-12 with Los Angeles and the Mets last season, but he is reviving his career in 2014. He gave up four hits and three walks with two strikeouts while lowering his ERA to 3.20 — almost a run below his career average.
After being hit on the top of his hand leading off the first inning, Heyward remained in the game and scored on the homer by Gattis. Jordan Schafer hit for Heyward in the second.
The homer by Gattis, his 14th, also drove in Freddie Freeman, who walked. Johnson followed with his homer over the center field wall for a 4-0 lead.
Wilson had allowed only one homer in his last five starts before allowing the back-to-back shots.
The Angels scored in the third when Hank Conger hit a leadoff double. Conger moved to third on a wild pitch before scoring when another wild pitch from Harang bounced past Gattis.
An error by Braves center fielder B.J. Upton, who dropped Kyle Calhoun’s liner, helped Los Angeles in the eighth. Upton caught up to the ball but couldn’t hold on when trying for a basket catch at his waist.
Mike Trout followed with a bloop double off Simmons, leaving runners on second and third with one out. Pujols, who has hit .347 in his career against the Braves, then punched a two-run single past second baseman Tommy La Stella.
Simmons struck out Howie Kendrick and ended the inning on Erick Aybar’s grounder to first base.
Wilson was in control after the ugly first inning. He gave up only three hits in five scoreless innings after the first.
Braves shortstop Andrelton Simmons left his feet to make a diving catch of a sharply hit grounder by Josh Hamilton in the sixth. Simmons bounced up to throw out Hamilton in a close play at first base.
NOTES: Angels manager Mike Scioscia said LHP Tyler Skaggs (right hamstring) could return from the 15-day DL next weekend. ... Andrelton Simmons, who is from Curacao, sprinted through the clubhouse screaming “Goooaaaalll!” before the game when The Netherlands scored the go-ahead goal in their 5-1 World Cup victory over Spain. ... C Gerald Laird said his right jaw was sore after being hit by Corey Dickerson’s bat in Thursday’s game at Colorado, but he has passed a concussion test and was available off the bench. ... OF Justin Upton (sore left hamstring) started after missing Thursday’s game. ... Atlanta’s Gavin Floyd, who earned his first win of 2014 at Colorado on Monday, will face Garrett Richards in a matchup of right-handers on Saturday night.