Austin Jackson and Omar Infante also homered for the Tigers, and Doug Fister (4-0) struck out eight in seven innings on a rainy night at Comerica Park.
Mike Minor (3-2) allowed a three-run homer to Jackson in the third, and although the Braves came back to tie it, Cabrera doubled and scored in the sixth to make it 4-3.
Infante hit a solo shot in the seventh, and Cabrera added an opposite-field homer off reliever Cory Gearrin.
Atlanta has lost four straight and is 3-8 since a 12-1 start.
Cabrera extended his hitting streak to 12 games.
The NL East-leading Braves have a 2½-game lead over Washington in the division, with a four-game series against the Nationals starting tonight.
Detroit won the three games in this series by a combined 25-7. Anibal Sanchez set a franchise record Friday with 17 strikeouts, and it looked as if Fister might approach that Sunday when he fanned five in the first two innings.
Atlanta manager Fredi Gonzalez shuffled his lineup before the game, giving struggling outfielder B.J. Upton the night off. It didn’t matter much. Aside from a three-run fourth, the Braves were quiet offensively, and Minor gave up six runs in 6 2/3 innings.
Jackson came to the plate with two on in the third and opened the scoring with a drive that cleared the fence and the bullpen in left-center.
The Braves tied it the following inning. Chris Johnson hit an RBI double, and Evan Gattis drove in a run with a single to make it 3-2.
With men on first and third and one out, Dan Uggla hit what looked like a double play grounder, but Infante’s relay from second to first was a bit wide, and the Tigers got only one out on the play, allowing the tying run to score.
Victor Martinez’s sacrifice fly scored Cabrera to put Detroit ahead in the sixth. Minor got the first two outs of the seventh, but Infante hit his second homer in two days, and Jackson drew a walk to end Minor’s night.
Gearrin allowed Torii Hunter’s single and Cabrera’s opposite-field drive — the third home run of the year for the Triple Crown winner.
Fister, making his 100th career start, allowed three runs and six hits with no walks.
Minor allowed six hits, walked two and struck out six.
Jose Valverde made his third appearance for the Tigers since returning from the minors less than a week ago. After two saves in two chances, he came on in a non-save situation Sunday — with two on in the ninth and an 8-3 lead.
Valverde got the last three outs in order.
NOTES: The game was played amid a light, misty drizzle, and it started raining a little harder in the fourth, but there were no delays. ... Detroit RHP Al Alburquerque pitched an inning-plus of eventful relief. He walked two, struck out three, hit a batter and threw two wild pitches. ... Fister had two hit batsman, bringing his season total to eight. ... Detroit hosts Minnesota tonight. Max Scherzer (2-0) takes the mound for the Tigers against Mike Pelfrey (2-2). ... Atlanta’s Julio Teheran (1-0) is scheduled to start against Washington’s Stephen Strasburg (1-4).