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.
Wisconsin business offering 'therapeutic cuddling' forced to close
Ohio crash that killed two caught on camera [VIDEO]