The Indians scored twice in the bottom of the ninth to keep the game alive and then won their seventh in a row. Cleveland won in its final at-bat for the ninth time this season, most in the majors.
It was a 3-3 contest heading into the ninth, but Chicago loaded the bases with two away before Jeff Keppinger drove in two runs with a bases-loaded single.
The Indians also loaded the bases in the bottom half of the inning with nobody out and tied the game on sacrifice flies by Michael Bourn and Jason Kipnis.
After eventual winning pitcher Chris Perez (4-1) worked the top of the 10th, Dylan Axelrod came on in the bottom half of the inning.
Santana greeted Axelrod (3-7) by hitting a 3-2 pitch over the wall in right for his 12th home run.
The White Sox suffered their sixth straight loss.