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.
Gal Gadot cast as Wonder Woman for 'Batman vs. Superman'
Jordana Brewster on Paul Walker: 'He was an enormous presence in my life'