The Royals took an early 2-0 lead, but Cleveland scored in four straight innings starting with the fourth.
Three of the Indians' runs came in the sixth and Cleveland left the bases loaded in that inning. An RBI single by Mike Aviles tied the game at 2-2 and Santana then worked a four-pitch walk to force in Michael Bjorn with the run that put Cleveland in front for good.
Michael Brantley added a sacrifice fly in the sixth, Aviles had also had a sacrifice fly in the seventh and Brantley hit a leadoff homer in the eighth.
Cleveland starter Justin Masterson (9-5) lasted 6 1/3 innings to get the win. He allowed two runs while working his way around nine hits and two walks.
Luis Mendoza (2-4) surrendered four runs on four hits in five innings to suffer the loss.
Jessica Simpson shares three-way kiss with friends in photo
Senate Democrats to pull all-nighter on climate change