Hafner provided a two-run homer in the first inning and Cabrera led off the fourth with his 24th home run of the year while Fukudome's shot came in the fifth.
All of the home runs came off White Sox starter Gavin Floyd (12-12), who allowed a total of seven hits and struck out seven over 6 2/3 innings.
Cleveland's Jason Kipnis reached on an infield hit and, with two outs, Hafner followed with a shot to right for his 12th home run of the year.
Adam Dunn and Alejandro De Aza knocked in runs and tied the score for Chicago in the second but Cabrera's drive just cleared the wall in right to break the tie in the fourth. Fukudome's homer -- also to right -- gave him seven on the year.
The White Sox added another De Aza RBI in the sixth but still lost for the eighth time in nine games.