Josh Fields hit a two-run homer and drove in four runs for the White Sox, who have won four of their last five games. Jermaine Dye hit a three-run homer, and Alex Cintron had three hits, an RBI and a run scored. Richar finished with three hits on the night.
Javier Vazquez (13-8), who struck out 13 with no walks, allowed two runs on five hits over eight innings.
Royals starter Kyle Davies (2-6) was charged with six runs on seven hits over 4 1/3 innings.