The Royals' playoff push was further damaged by their fourth straight loss while the White Sox, with the second-worst record in the American League, won their fifth in a row.
Chicago loaded the bases with nobody out in the fourth against Jeremy Guthrie (12-10) and Conor Gillaspie then delivered a run with a one-out single.
That brought up Viciedo, who homered to left on a 1-0 pitch.
Kansas City managed only single runs in the fourth and sixth while being limited to six hits.
Five of those hits were given up over six innings by Andre Rienzo (1-0), who picked up the first victory of his major league career. Rienzo made the fifth start of his rookie season and although he had given up three runs or less in the first four he had not figured in the decision in any of them.
Four Chicago relievers blanked Kansas City over the final three innings with Addison Reed working a 1-2-3 ninth for his 33rd save.