Viciedo smacked a two-run shot en route to five RBI while Rios added a homer with a man aboard in the eighth, finishing with three hits, three RBI and three runs scored.
Paul Konerko went 4-for-4 with a pair of RBI as the White Sox banged out 17 hits to log their second straight win against American League Central-leading Cleveland.
Jake Peavy (6-1) earned the win despite being raked for seven runs on six hits over 6 1/3 frames.
Derek Lowe (6-3) lasted only 2 1/3 innings for the Indians, issuing eight runs on 10 hits before being knocked out the game.
Jason Kipnis drove in four runs with a pair of two-run homers and Michael Brantley added a bases-clearing double as the Tribe saw their AL Central lead over the White Sox shrink to 1 1/2 games.