Kansas City snapped a 12-game losing streak, winning for just the fourth time this season.
Butler hit a two-run homer in the first inning and a solo shot in the ninth. All of Kansas City's runs came on long balls, with Eric Hosmer contributing a two-run blast in the fifth and Alex Gordon hitting a three-run shot in the ninth prior to Butler's second home run of the game.
Kansas City had not won since April 10.
The victory went to Luke Hochevar (2-1), who allowed two runs on four hits in 6 1/3 innings.
Two of the Royals' homers came off starter Ubaldo Jimenez (2-1). He lasted six innings while giving up four runs on six hits.
Pistorius testifies he didn't consciously pull trigger when he shot girlfriend
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards