"We were one swing away from, really, winning the ballgame -- in a game that we were never really in the whole game," Royals manager Ned Yost said.
Trailing, 5-2, and down to their final out in the top of the ninth, Royals third baseman Mike Moustakas' liner to left was misjudged by Jordan Danks, who entered before the inning as a defensive replacement.
Catcher Brayan Pena singled home Moustakas and was removed for pinch-runner Tony Abreu, who scored on Johnny Giavotella's single. Giavotella was also lifted for a pinch-runner, Jarrod Dyson, who stole second, but was left stranded when White Sox closer Addison Reed got center fielder Lorenzo Cain to strike out swinging.
"It would be nice to make it a little easier on myself. But, at the end of the day, we got out of here with a win," said Reed, who suffered the loss on Friday.
Chicago's victory snapped Kansas City's six-game winning streak against the White Sox, who extended their American League Central lead to 1 1/2 games over Detroit, pending the outcome of the Tigers' game in Anaheim on Saturday night.
Saturday began nicely for Chen, as he caught White Sox shortstop Alexei Ramirez looking in the bottom of the first for his 1,000th career strikeout.
But on the very next pitch, Viciedo blasted Chen's sinker to right for a solo home run.
Flowers knocked a two-run homer in the fourth inning to extend Chicago's lead to 4-1, and Konerko hit a solo shot in the sixth to give the White Sox a four-run cushion in Chen's final inning of work.
"I felt like my fastball was there and my offspeed pitches were there," Chen said. "I made two or three mistakes, and I paid for them."
Chen (10-12, 5.36 ERA), who also gave up a run-scoring double to Ramirez in the third, allowed five runs on six hits. He added six strikeouts and walked two.
"It's hard to say he's throwing the ball good, but he's actually throwing the ball OK," Yost said. "It's the homers that are hurting him."
The five runs Chen gave up equaled the total he allowed in his last five combined starts against the White Sox.
"He seems to always to be pretty effective against us. Locates, doesn't make too many mistakes," Flowers said. "I guess he made a few today. We took advantage of them well."
White Sox starter Chris Sale (16-6, 2.88 ERA) wasn't on top of his game -- needing 101 pitches to log six innings -- but earned the win while holding Kansas City to one run.
The lone run the Royals managed against the AL Cy Young Award contender came in the top of the third and was hotly contested.
Cain singled and Alcides Escobar drew a one-out walk before Sale struck out Alex Gordon. Billy Butler sent a two-out single into right field and Chicago's Alex Rios didn't immediately throw home. Cain rounded third and Rios finally made a throw, but Cain was signaled safe by home-plate umpire Mark Carlson.
White Sox manager Robin Ventura and Flowers argued the call and, after Ventura returned to the dugout, White Sox bench coach Mark Parent was ejected.
TV replays appeared to show Flowers tagged Cain on the left thigh before the center fielder's foot touched the plate.
Sale finished with six strikeouts and allowed five hits -- one a single by Salvador Perez to extend his hitting streak to 13 games.
Escobar helped narrow the Royals' gap to 5-2 with an eighth-inning RBI double off right-hander Brett Myers.
Cain was thrown out trying to score from first on Escobar's double, with the middle of the order due up with no outs.
"It's one of those situations where you make them make the play. They did," Yost said. "You try to pick your spots to pick up those runs when you can, so I don't fault anybody for that. It's a gamble I would've taken if I was coaching third."