Swisher's blast gave the Indians a 4-1 lead in the fifth and helped bring Cleveland its sixth straight victory.
Cleveland is in the second wild card position, one game behind Tampa Bay for the top spot and one game in front of Texas.
Two Chicago errors handed Cleveland three unearned runs, one of them scoring in the second inning when Marcus Semien misplayed a grounder at shortstop.
Danny Salazar (2-3) struck out eight over 5 1/3 innings to get the win. He gave up two runs on six hits. Dylan Axelrod (4-11) surrendered three runs on eight hits in 5 2/3 to take the loss.
Benedict Cumberbatch's dramatic reading of R. Kelly lyrics is just what you need
Gal Gadot cast as Wonder Woman for 'Batman vs. Superman'