Cleveland's lead was down to one heading into the seventh but Kipnis hit a three-run shot in that inning to put the Indians in control.
The White Sox cut their deficit in half with one out in the ninth when Adam Dunn hit a two-run homer off Dan Wheeler, resulting in Chris Perez being summoned from the bullpen. Perez walked Paul Konerko but then struck out A.J. Pierzynski and got Alex Rios on a grounder to end the game and collect his ninth save.
Cleveland starter Justin Masterson (1-2) allowed eight hits and walked three but he survived 6 1/3 innings while striking out six to win for the first time in his six starts this year.
John Danks (2-4) was touched for six runs on nine hits in seven innings to take the loss.