The Royals had four walk-off wins during a homestand for the first time since April 2000.
Brandon Moss hit a game-ending double off Tyler Clippard that lifted Kansas City over the White Sox 5-4 Sunday, extending Chicago's longest losing streak in four years to nine games.
Whit Merrifield, Jorge Bonifacio and Eric Hosmer hit consecutive home runs off Derek Holland in the fourth inning for a 3-0 lead, and Merrifield hit another solo shot in the eighth off Dan Jennings to tie the score at 4.
Mike Moustakas singled off Gregory Infante (0-1) leading off the ninth and pinch-runner Lorenzo Cain advanced when Infante bounced a slider to Alcides Escobar for a wild pitch. Infante hit Escobar on the left hand, Clippard relieved in his second appearance since he was acquired from the New York Yankees, and Moss doubled.
"I got to two strikes and just tried to battle through it, hope he left something up that I could hit," Moss said. "Before the last couple of weeks, I'd get to two strikes and not to say you'd think it was over, but that you probably missed your chance. But I've been seeing the ball a lot better, and better balance at the plate, so it's not a panic anymore."
Moss is 8 for 19 during a five-game hitting streak that coincides with the winning streak. After hitting .156 in June, Moss is batting .326 with four home runs, five doubles and nine RBIs in July.
"We all know what he can do," Merrifield said. "He was just going through a funk. When he's going well, it's an unbelievable lift to this offense."
Kelvin Herrera (3-2) struck out two in a perfect ninth, extending the scoreless streak by the Royals bullpen to 18 innings over five games. Kansas City has won five straight following a skid of seven losses in eight games and went 6-4 on its homestand.
Chicago had not lost nine in a row since Aug. 30-Sept. 7, 2013.
Holland allowed three runs, four hits and three walks in 4 2/3 innings, throwing 87 pitches. He is 1-6 in his past 10 starts,
"Just bad execution," Holland said.
Kansas City had not hit three straight homers since Tony Graffanino, Angel Berroa and Doug Mientkiewicz against Detroit's Mike Maroth on May 25, 2006, a game the Royals lost 13-8.
Royals starter Travis Wood gave up four runs and seven hits in 4 2/3 innings. He has an 8.31 ERA in three starts this season and is winless as a starter in eight appearances since April 28, 2015.
Adam Engel hit a three-run double in the fourth and scored on Jose Abreu's double for a 4-3 lead.
Royals: RHP Jason Hammel (4-8) is slated to start Monday at Detroit in the opener of a 10-day trip. RHP Justin Verlander (5-7) is to pitch for the Tigers.