KANSAS CITY, Mo. – John Danks' struggles were just enough that the White Sox bullpen couldn't bail out Chicago.
The left-hander allowed three runs in seven innings, but Chicago tied it before Salvador Perez hit a go-ahead RBI double with two outs in the eighth inning and the Royals won 4-3.
Alex Gordon doubled off left-hander Scott Downs (0-1) before Perez hit Maikel Cleto's second pitch down the left-field line.
Danks did not allow a hit until the fourth inning, when six straight Kansas City batters reached base.
Omar Infante, Eric Hosmer, Billy Butler and Alex Gordon singled, then Mike Moustakas walked with the bases loades.
Butler drove in another run in the fifth with a sacrifice fly.
"I was trying to stay aggressive," Danks said. "Walking Hosmer on four straight, I was being extra careful, hoping he'd just get himself out. I was continuing to have problems, but I tried to stay aggressive. You'd like to have a quicker inning."
After throwing 39 pitches in the first three innings, Danks labored through 38 pitches in the fourth.
"It was the heart of the lineup. I was trying to come inside and just lost control a little," Danks said. "Hosmer I got behind 2-0 and you don't want to make too good a pitch to him. You never want to give up runs, but the good part of it is to give up just two. It could have been better, but it could have been worse."
Danks made it through seven innings, throwing 115 pitches, his highest total since having shoulder surgery in 2012. Danks got a no-decision when the offense scored two runs in the eighth off reliever Wade Davis. He is 6-0 in 14 career starts against Kansas City, the only active pitcher with a 1.000 winning percentage against the Royals with a minimum of 10 starts.
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.
Right fielder Nori 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.
Conor Gillaspie hit an RBI single in the eighth before Paul Konerko's sacrifice fly tied it and gave him 146 RBIs 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.
"Chen and John are guys that are crafty," White Sox manager Robin Ventura said. "They're uncomfortable for guys to hit, but I thought our guys battled back. We feel like we can fight back."
Moustakas' fielding error led to an unearned White Sox run in the fifth. Adam Eaton's groundout scored Ramirez.
NOTES: The Royals designated for assignment IF 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.