The Phillies lost their seventh in a row.
Scherzer (15-1) threw only 75 pitches - he was one of several stars pulled early after the game got out of hand.
Detroit scored five runs in the first and three in the second off Raul Valdes (1-1), who started because Cliff Lee was out with a stiff neck. Cabrera's solo homer in the first was his 32nd of the year, and he later added two more RBIs to increase his season total to 99.
Matt Tuiasosopo hit a three-run homer in the first.
The Tigers remain three games ahead of second-place Cleveland in the AL Central. The Phillies, meanwhile, are now 10 back of NL East-leading Atlanta.
Detroit outhit Philadelphia 15-2.
Valdes had been used exclusively as a reliever this year, and his first start since June 27, 2012, did not go well. He actually retired his first two batters before Cabrera - back after missing four games because of a left hip problem - went deep to put Detroit ahead 1-0.
Prince Fielder, Victor Martinez and Jhonny Peralta followed with consecutive singles - Peralta's hit brought home another run - and Tuiasosopo hit his seventh homer of the year, into the bushes beyond the wall in center field.
Cabrera added an RBI single in the second, and Martinez's two-run single made it 8-0.
Cabrera came out of the game in the fifth, and he wasn't the only one who didn't stick around for the full nine innings. Detroit's Prince Fielder and Philadelphia's Jimmy Rollins and Chase Utley were among the players pulled early.
The only baserunner Scherzer allowed was Darin Ruf, whose second-inning double was nearly caught by Austin Jackson in center. Scherzer struck out seven, and the Detroit All-Star again got plenty of run support. Detroit was already backing Scherzer with an MLB-best average of 7.32 runs - and that was before Saturday's rout.
Cabrera hit an RBI groundout in the fourth. Valdes was finally pulled after allowing nine runs and 12 hits in 3 2-3 innings. He struck out three.