Twins catcher Joe Mauer hit a solo home run to right-center off Sox starter Jose Quintana (7-9) in the first to give the Twins a 1-0 lead.
The Sox took a 2-1 lead in the second when Dayan Vicideo hit a two-run RBI single to score Adam Dunn and Avisail Garcia.
In the third inning, Jeff Keppinger and Dunn hit solo home runs off Twins starter Kevin Correia (8-9) to extend the Sox lead to 4-1.
The Twins cut the deficit to 4-2 in the seventh. Wilkin Ramirez tripled to left and Brian Dozier drove him in on a sharp single to center. Sox reliever Donnie Veal then walked Mauer before striking out Justin Morneau to end the inning.
Keppinger and Alexei Ramirez singled in the eighth and they both advanced on a wild pitch by Twins reliever Brain Duensing. Keppinger then scored on Trevor Ploufee’s throwing error to first base.
Keppinger played second base for Gordon Beckham, who did not start because of a right quad injury. Beckham entered the game in the eighth to replace third baseman Conor Gillaspie, who left with a bruised left hand.
Sox manager Robin Ventura also returned Viciedo to the starting lineup after missing six starts due to a sore left thumb suffered on Aug. 9 against the Twins while diving for a fly ball in right.
In six and two-thirds innings, Quintana allowed six hits and two earned runs, struck out seven and walked two. Correia gave up nine hits and four earned runs, struck out three and walked one in seven and one-third innings.
Sox left-hander Chris Sale (8-11, 2.73 ERA) and Twins Andrew Albers (2-0, 0.00 ERA) are the projected starters for the series finale on Saturday night at 6:10 p.m. CT (WGN, WSCR 670).