After Conor Gillaspie singled to load the bases, Viciedo laced a 2-2 pitch into center field that eluded a diving Brandon Barnes, allowing all three runners to score.
Addison Reed racked up his 20th save for the White Sox, who snapped a four-game losing streak.
Bud Norris (5-7) absorbed the loss, surrendering four runs on eight hits over six full innings.
Barnes went 3-for-5 and Jason Castro drove in a pair of runs for Houston.
Yosemite climber falls 30 feet, suffers major injuries
'How to Train Your Dragon 2' releases 5-minute clip