Offensively, the Sox had another good night from D'Angelo Jimenez and Jose Valentin at the top of the order. Jimenez went 2-4 with his fourth triple, a double, a stolen base, a walk, and two runs scored, while Valentin went 2-2 with two RBIs.
The Indians jumped in front to a 2-0 lead off Colon in the third with an Omar Vizquel single, scoring Josh Bard, and a Karim Garcia RBI-sacrifice fly two batters later.
The Sox tied the game up in their half of the third. Jimenez started the inning with a triple and scored on a Valentin single. Frank Thomas grounded out to Indians starer Ricardo Rodriguez, advancing Valentin to second for Magglio Ordonez, who doubled. Ordonez, who now has a team-leading 14 RBIs, went 2-5 with two RBIs.
Colon ran into trouble again in the fifth, giving up a double and single before Garcia grounded into a double play, scoring Vizquel from third.
The game was tied back up with a Carlos Lee solo home run in the sixth, and the Sox took a 4-3 lead with a run Indians reliever's. Jimenez started the inning with a walk and a stolen base, and then reached third on a Valentin sacrifice. Billy Traber then intentionally walked Thomas before Jose Santiago came in relief. With men on the corners, Magglio Ordonez hit a grounder off the glove of Santiago for an infield single, scoring Jimenez.
The Sox added insurance in the eighth with a sacrifice fly by Valentin, scoring Sandy Alomar, who reached on an infield single. Alomar advanced to third on Jimenez' double.
Thomas went 0-2, but walked twice, giving him 1,303 walks in his career, passing up Luke Appling for the most in franchise history.
Josh Stewart will take the mound Saturday against lefty Brian Anderson. Gametime is at 1:05 p.m. CT and will be televised on WGN.