Gillaspie went 4 for 4, scored twice and drove in a run. He became the first White Sox player to hit three doubles in a single game since Paul Konerko on May 26, 2012, against the Indians.
Viciedo connected in the third inning against Josh Tomlin (3-2) as the White Sox improved to 5-3 this year against Cleveland.
Cleveland third baseman Lonnie Chisenhall committed a costly error in the third inning, allowing Marcus Semien to reach. Gillaspie then singled to put runners on first and second before Viciedo drove a 1-2 pitch over the wall in left for his fifth homer, giving the White Sox a 3-1 lead.
Gillaspie is batting .407 (24 for 59) in his last 16 games.
The White Sox added two more runs in the sixth on consecutive RBI singles for Alexei Ramirez and Alejandro De Aza against Bryan Shaw. Gillaspie's third double in the seventh scored Semien from first base, making it 6-2.
Tomlin (3-2) allowed two earned runs and five hits in five-plus innings. He struck out eight and walked one.