Verlander (6-3) scattered seven hits and struck out seven in another solid outing for Detroit, which got back on the winning track after losing the series opener and have now won five of their last six. Brennan Boesch also had a two-run homer for the victors.
Gordon Beckham had a two-run shot in fifth to tie the game for Chicago, which had its season long four-game win streak halted.
Chicago could have taken the lead in the eighth with runners on the corners with one out. But Verlander blew a 100 m.p.h. fastball past Carlos Quentin for a second out. He then made a stabbing grab and throw during A.J. Pierzynski's comebacker while falling down at the front of the mound to end the frame.
Austin Jackson followed with a ninth-inning lead-off triple that bounced off the base of the left-center wall. The opportunity looked to be squandered after Don Kelly popped out, Boesch struck out and Cabrera was quickly down 0-2 in the count. Two pitches later, though, the slugger launched an opposite field homer over the fence in right to take the 4-2 lead.
Jose Valverde came in the ninth and worked around a leadoff walk to get his 15th save of the season.
Detroit posted two runs in the first inning but left the bases loaded.
Jackson started with a single and stole second before Kelly struck out. Boesch then launched a moonshot into the right field seats for a 2-0 lead.
The Tigers looked to keep the inning going when Edwin Jackson walked Cabrera and gave up a Victor Martinez double. Edwin Jackson got Andy Dirks to pop out before Jhonny Peralta walked to jam the bases, but Alex Avila grounded out to second, ending the threat.
Verlander was his own worst enemy in the fifth inning after knocking down a Brent Lillibridge comebacker and sailing the throw over Cabrera's head. The ball skipped into foul territory, allowing Lillibridge to scamper to third with no outs.
Verlander then served a first pitch curveball to Beckham, who sent it into the seats in left field to tie the game at two apiece.