"We've very confident coming in here each day," Butler said. "We believe in each other. We honestly believe coming in each day that we're going to win."
Chicago trailed 5-2 before Dunn drove a 2-2 pitch from Tim Collins over the wall in left-center in the eighth. Kevin Youkilis, who singled with one out for his 1,000th career hit, was aboard for Dunn's major league-best 35th homer of the season.
Dunn is one of 11 active players with 400 homers and No. 50 to reach the mark overall. The burly slugger and Paul Konerko are the first teammates to reach 400 career homers in the same season.
"It's just about the worst-case scenario, getting it like this," Dunn said. "We've played two bad games. Tonight was a disaster from the get-go. Obviously, I would have wanted it to come in a win."
Kansas City responded with four runs in the bottom half. Butler, who finished with three hits, singled in Alcides Escobar before Moustakas hit a drive to right for his 19th homer.
All four runs were charged to Brett Myers, who gave up four hits.
"A 5-4 lead is by no means a comfortable situation," Butler said. "Nobody wants to be pitching with that tight of a lead. Sometimes you have to do it. We have to do it enough. We've had to win enough tight ones, so it was good to have a cruise win."
Moustakas finished with four RBIs for the Royals, who have won four of five. Escobar had four infield singles, scored three runs and had his team-leading 24th steal.
Butler, who homered Friday, was hit by a Jake Peavy pitch in the first inning.
"I think we all know what that was," Butler said. "I'm not going to beat around the bush on that. Maybe I did a little excessive last night. Professionals hit me below the belt and that's the professional way to do it and move on. I felt like I won today. We're going to leave it I professionally got back even."
The White Sox committed a season-high four errors. They entered ranked second in the majors with a .988 fielding percentage. It was just their ninth multi-error game this season.
The Royals took advantage of miscues by catcher Tyler Flowers, right fielder Alex Rios and second baseman Gordon Beckham to push across two unearned runs in the third. Butler had an RBI single and scored on Moustakas' base hit.
Bruce Chen (9-10) held the White Sox scoreless until Dunn doubled and scored on Konerko's 20th homer in the sixth. It was Konerko's 41st career home run against Kansas City.
Konerko has connected in back-to-back games since coming off the concussion disabled list Friday.
Chen allowed five hits, struck out five and walked one in six innings. Chen mentioned how the rotation has been pitching well in August.
"I just wanted to keep it going, not let the starting rotation down," Chen said. "I see all these guys doing well. I say, 'You know what, I can do that.' You can start seeing how aggressive and how they're pitching."
Peavy (9-9) gave up five runs, two unearned, and nine hits in 5 1/3 innings, dropping to 0-6 with a 5.52 ERA in his past seven starts against the Royals. He is 1-5 with a 5.52 ERA in six starts at Kauffman Stadium.
The Royals are 12-6 in their past 18 games.
Royals 2B Chris Getz, who broke his left thumb Friday, had season-ending surgery with two pins placed in the thumb. There is an eight-week recovery time, and Getz is expected to be at 100 percent by spring training. Manager Ned Yost said Johnny Giavotella, who was recalled from Triple-A Omaha, would get the majority of the playing time at second with Getz out. .... White Sox CF Alejandro De Aza was not the lineup with cramps in his lower back. Dewayne Wise replaced him. ... CF Lorenzo Cain hit leadoff for the first time. Cain is the eighth player Yost has batted first this season. ... RHP Jeremy Guthrie takes a 15-inning scoreless streak into Sunday's start against the White Sox, who will start rookie LHP Jose Quintana.