Hisashi Iwakuma (6-3) gave up two runs on seven hits and worked out of two bases-loaded jams in 5 2/3 innings to get his fourth win in his last five outings.
White Sox starter Jeff Samardzija (8-11) got his career-worst sixth straight loss.
Chicago trailed 7-2 with two outs in the eighth inning before rallying for four runs. Adam Eaton drew a bases-loaded walk, Tyler Saladino followed with a two-run single and Jose Abreu added a run-scoring single. Melky Cabrera then grounded out to end the inning.
Tom Wilhelmsen got the last four outs for his sixth save in six chances.