Swisher opened the 12th with a single to center and moved into scoring position on a Jason Kipnis base hit. Brantley lined an 0-2 pitch that centerfielder Clete Thomas caught, but Thomas' throw was off and Swisher scored the game-winning run.
That hung the loss on Ryan Pressly (3-3), who allowed two hits in 2 1/3 innings of relief. He was the eighth Twins pitcher of the day.
The Indians trailed 7-3 going into the eighth when Brantley singled in a run and Jason Giambi launched a three-run home run that tied the score.
Cleveland went up in the 10th on Carlos Santana's 14th home run of the season but Joe Mauer answered with one out in the bottom of the inning with his 10th homer. Mauer ended up 5-for-7 with four RBI and two runs scored.
Mauer scored the game's first run as the Twins took a 2-0 lead in the first and Brian Dozier made it 4-0 the next inning with a two-RBI single.
Mike Aviles singled in a pair for the Indians in the fourth and Cleveland got within 4-3 in the sixth on an RBI single from Brantley. But Mauer had a two-run single in the bottom of the inning and Chris Colabello singled in Josh Willingham in the seventh for the 7-3 Minnesota lead.