Josh Fields also homered for the White Sox, who dealt Detroit its third straight loss and ninth in 11 games.
Mark Buehrle (9-6) won consecutive starts for just the third time this year. He gave up three runs and seven hits in eight innings, striking out three and walking two.
Dye is 27-for-84 with 10 homers, eight doubles and 18 RBIs since the All-Star break. He became the first White Sox player with four extra-base hits in a game since Robin Ventura on July 19, 1991, when he hit two homers and had two doubles in Chicago's 13-9 victory over the New York Yankees on Thursday.
Andrew Miller (5-5) left the game after four innings with a mild left hamstring strain. The rookie left-hander suffered the injury while warming up for the fifth inning and was listed as day-to-day.
Miller gave up six runs and seven hits, with five strikeouts and a walk.
Dye gave Chicago a 1-0 lead when he lined Miller's 1-2 pitch over the left-field fence to lead off the second, his 22nd of the season.
The White Sox broke the game open with five runs in the fourth. The first four came on Uribe's grand slam, a high drive into the right-centerfield stands. It was Uribe's first grand slam since last Sept. 24, and his 11th homer of the season. The other run came on Andy Gonzalez's fielder's choice.
Detroit cut the lead in half in the bottom of the fourth on Magglio Ordonez's two-run double and Mike Hessman's RBI single.