It's Butler's second home run of the year and first since May 2nd against Detroit.
Kansas City (35-32) laid claim to a five-run inning for the second straight day. With no outs and the bases loaded in the fourth, Butler and Alex Gordon scored the opening runs on a throwing error by Leury Garcia.
Moustakas, Nori Aoki, and Omar Infante also drove in runs before the end of the frame.
The Royals third baseman followed that with his sixth homer of the year in the eighth, putting Kansas City up 6-0. Moustakas is 8 for 22 over the last week with two homers and five RBIs.
Eric Hosmer preceded Butler's blast in the ninth with an RBI double.
Danny Duffy (4-5) pitched seven spotless innings, matching a career-high with nine strikeouts while scattering five hits. The only White Sox (33-36) run came on Paul Konerko homer off Michael Mariot.