The win kept the Tigers seven games back of AL Central-leading Cleveland with 12 games left to play.
Despite missing Ian Kinsler (concussion) and Victor Martinez (bruised right knee), the Tigers teed off on lefty Hector Santiago, who had stymied them last Thursday.
Santiago (12-9) didn't allow a hit until Andrew Romine, playing in place of Kinsler, singled with two outs in the third inning. From there, half of Detroit's final 16 batters against Santiago reached base, seven with hits. Cameron Maybin tripled home Romine, Cabrera doubled and scored in the fourth, then McCann's homer punctuated a four-run sixth.