The contest was delayed by rain in both the fifth and seventh innings, but was finally played to a conclusion. The final out came at 12:30 a.m.
Cabrera doubled in a run during Detroit's two-run first and he hit a two-run homer in the eighth to give the Tigers a four-run lead. Cabrera raised his batting average to .387.
Detroit moved in front for good with a four-run third that featured RBI doubles from both Jhonny Peralta and Brayan Pena, then took a 9-2 lead in the top of the fifth thanks in part to run-scoring singles by both Don Kelly and Omar Infante.
The big lead allowed Justin Verlander to pick up a win despite another sub-par performance.
Verlander (5-4) had given up 11 runs on 12 hits over 7 2/3 innings covering his previous two starts and in this one he was touched for five runs on 10 hits in five frames.
Ubaldo Jimenez (3-3) allowed six runs on seven hits in four innings to suffer the loss.
Cleveland scored five times over the fifth and sixth innings to climb back in the game, Carlos Santana hitting a two-run homer in the fifth and Yan Gomes producing a solo shot in the sixth.
'Happy' fan videos make Pharrell cry [VIDEO]
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards