The Tigers won for just the third time in 12 games to even their three-game series with the White Sox, whose three-game winning streak ended.
Detroit starter Buck Farmer (3-1), who was called up from Triple-A Toledo before the game, gave up three runs in 5 2/3 innings. He has allowed six home runs in five starts.
White Sox starter Carlos Rodon (2-5) allowed five runs and seven hits in five innings for his shortest outing since July 25. Rodon was 1-0 with a 2.25 ERA in his previous five starts.
The White Sox cut the lead to two in the sixth inning on Tim Anderson's RBI double after a two-out walk and single off Farmer. Daniel Stumpf replaced Farmer and struck out Yolmer Sanchez to end the inning.
The Tigers stretched their lead back to three in the seventh inning on Andrew Romine's sacrifice fly after Mike Pelfrey loaded the bases with a fielder's choice, a walk and a hit batter.
The White Sox put two on in the eighth before Shane Greene took the mound and got an inning-ending double play. Greene allowed a single and committed an error to bring the tying run to the plate in the ninth before striking out Tyler Saladino looking to earn the five-out save for his fifth overall of the season.
Sanchez hit a two-run home run, his eighth of the season, for a 2-0 White Sox lead in the second inning. Avisail Garcia had singled and advanced on an error and a groundout before the Sanchez homer.
Sanchez also had the walk-off hit Friday against the Tigers.
Upton and Cabrera hit back-to-back home runs in the third inning to give the Tigers a 3-2 lead. Upton tied the game with his 28th home run, a two-run shot, before Cabrera followed with his 14th of the season. The Tigers have homered back-to-back four times this season.
The Tigers added two runs in the fourth inning for a 5-2 lead. Ian Kinsler and Dixon Machado had RBI singles in that inning.
NOTES: White Sox INF/OF Nicky Delmonico went on the 10-day disabled list with a sprained right wrist Saturday. The rookie is hitting .307 with 12 RBIs in 22 games and became the first player in White Sox history to hit six home runs in his first 19 career games. ... In a corresponding move, the White Sox purchased the contract of C Rob Brantly from Triple-A Charlotte. He is batting .290 with 10 home runs in 82 games this season between Triple-A Charlotte and Triple-A Louisville in the Cincinnati organization. ... Tigers 3B Nicholas Castellanos (left wrist soreness) was out of the starting lineup Saturday for the second straight game as a result of Thursday's brawl with the Yankees, but he was available to pinch hit and is expected to play Sunday against the White Sox. ... White Sox RHP Reynaldo Lopez (back strain) said he is feeling good after throwing a bullpen Friday. He is expected to throw another bullpen Tuesday in Minnesota. He went on the 10-day disabled list Aug. 19, retroactive to Aug. 18. ... Tigers RHP Anibal Sanchez (left hamstring strain) felt good throwing a bullpen Friday, manager Brad Ausmus said. He went on the 10-day DL on Aug. 18, retroactive to Aug. 17. ... Ausmus was ejected in the fifth inning for his fifth ejection this season.