KANSAS CITY, Mo. -- Salvador Perez came up with the winning hit right after Nori Aoki made the game-saving catch.
Wade Davis (1-1) let the White Sox tie it at three when gave up two runs in the eighth on two singles, a walk, a hit batter and sacrifice fly.
Greg Holland worked around a leadoff walk for his second save in two days.
Royals right fielder Aoki prevented the White Sox from taking a lead when he made a lunging catch of Alexei Ramirez line drive to end the eighth with two runners on base.
''Nori made a tremendous catch that saved the game from being cracked open there,'' Royals manager Ned Yost said.
Aoki, a six-time Gold Glove winner in center field in Japan, got a good jump on Ramirez's scorcher.
''It was a situation where we couldn't give up any more runs,'' Aoki said through an interpreter. ''That was the play I was most happy with. The only thing was the sun was in my eyes.''
Ramirez already had two singles and believed he had one over extra bases over Aoki's head.
''I don't think it got up in the wind enough to have a chance,'' Paul Konerko said ''That's what the game comes down to sometimes, something so small.''
Conor Gillaspie hit an RBI single in the eighth before Konerko's sacrifice fly tied it and gave him 146 RBI against Kansas City, the most by any opponent.
Royals left-hander Bruce Chen allowed one unearned run on six singles, walked none and struck out seven in 6 1/3 innings, but had to settle for a no-decision.
White Sox left-hander John Danks did not allow a hit until the fourth inning, when six straight Kansas City batters reached base.
''I wish I had an explanation for it,'' Danks said. ''It was the heart of the lineup. I was trying to come inside and just lost control a little. Hosmer I got behind 2-0 and you don't want to make too good a pitch to him.''
Omar Infante, Eric Hosmer, Butler and Alex Gordon opened the inning with singles. Butler's single scored Infante for the first run, while Mike Moustakas walked with the bases loaded for the other run. Butler drove in another run in the fifth with a sacrifice fly.
''John just had the one inning where it got out of hand and he lost his control and it came back to bite us,'' White Sox manager Robin Ventura said.
Moustakas' fielding error led to an unearned White Sox run in the fifth. Adam Eaton's groundout scored Ramirez.
The Royals designated for assignment INF Pedro Ciriaco, who has a .277 career batting average in the majors with four clubs, and purchased the contract of RHP Aaron Brooks from Triple-A Omaha. With the addition of Brooks, the Royals have a 12-man pitching staff. Brooks, who was a starter in the minors, will go to the bullpen.. The White Sox have lost their first two away games after going an AL worst 26-55 in road games last year.. White Sox RF Avisail Garcia, in an 0-for-13 funk, was given the day off.. Aces LHP Chris Sale of the White Sox and RHP James Shields of the Royals are set to pitch Sunday.