The White Sox have won nine times in 11 outings and stayed two games behind division-leading Detroit in the American League Central.
Jose Contreras (4-7) struck out a season-best nine batters over 6 1/3 to get the win. He allowed six hits, including a homer by Jhonny Peralta in the seventh.
Dye had an RBI double in the first, drove in a run with a single in the third and his base hit in the seventh produced another score.
Aaron Laffey (3-2), making his first appearance since May 22, allowed four runs and seven hits in six innings to take the loss. He had been on the disabled list with a strained right oblique muscle.
Paul Konerko, who on Tuesday became the 12th player in White Sox history to hit three home runs in a game, added an RBI single during Chicago's three-run third.
The Indians have dropped 10 out of 13 and have lost five in a row to the White Sox.