Viciedo, who ended with four runs batted in overall, cut Chicago's deficit to 5-4 in the fifth when he blasted a line-drive homer deep into the left field stands off Tigers starter Drew Smyly.
Then in the sixth, the White Sox loaded the bases with one out against Luke Putkonen (0-2) and the Chicago outfielder delivered a two-run, go-ahead single.
Adam Dunn launched a two-run homer and Zach Stewart (3-0) earned the victory with three shutout innings of relief as the White Sox took the first contest of a two-game home series.
Addison Reed earned his third save despite allowing a hit and a walk in the ninth.
Wisconsin business offering 'therapeutic cuddling' forced to close
Reindeer recovered after escaping from Santa during lighting ceremony