His go-ahead, two-run single erased a 4-3 deficit with two outs in the bottom of the sixth inning.
Kansas City's Brayan Pena hit a pinch solo homer in the eighth.
Mitch Maier and Mark Teahen had one RBI apiece for the Royals, who snapped their four-game losing streak.
Winner Luke Hochevar (4-3) gave up four earned runs and nine hits in six innings. Closer Joakim Soria, the last of four pitchers, recorded his 11th save with a 1-2-3 ninth.
Chicago's Jermaine Dye hit a two-run, third-inning homer.
Gordon Beckham hit a solo shot in the sixth for the White Sox, who had won seven in a row.
The losing pitcher was starter Gavin Floyd (6-6).
Copyright 2009 by United Press International.