Austin Gomber tossed a season-high seven innings and Pierce Johnson earned his 13th save for the Rockies
Andy Ibanez homered and had two hits for Detroit.
After a quiet first inning, Colorado broke through in the second against starter Michael Lorenzen. C.J. Cron and Jones singled to left and Tovar blooped a single to shallow right to load the bases with no outs.
It extended Tovar's hitting streak to 13 games.
Harold Castro followed with another single to left to drive in two and Brenton Doyle laid down a sacrifice bunt, but a mental error loaded the bases again.
Profar then lined a two-run single to left and Doyle scored when Kris Bryant, activated off the 10-day injured list before the game, grounded into a double play.
Lorenzen (2-6) settled down after that to allow five runs on seven hits in five innings.
The Tigers got a run back in the third inning. Jake Marisnick led off with a single, stole second and went to third on catcher Elias Diaz's throwing error. He then scored on Spencer Torkelson's groundout to third
Detroit got closer in the fourth inning off Gomber. Javier Baez and Jake Rogers led off with singles and Cabrera followed with another base hit to drive in Baez and send Rogers to third.
He then scored when Gomber uncorked a wild pitch to make it 5-3.
Colorado gave Gomber a cushion against reliever Chasen Shreve in the sixth inning. Cron led off with a walk, Jones singled and Tovar homered to left, his eighth of the season.
That was more than enough for Gomber (6-7), who needed just 84 pitches to get through seven innings. He allowed three runs - two earned - on six hits and struck out seven.
The Tigers cut the lead in the eighth. Torkelson singled off the leg of reliever Jake Bird and Ibanez homered, his sixth
--Field Level Media