Cleveland starter Aaron Civale (4-2) allowed one run and five hits in eight innings. He struck out five and walked two for the Guardians, who had lost two straight, including a 5-3 defeat in the series opener on Monday
Emmanuel Clase retired the side in order in the ninth for Cleveland, wrapping up the victory in one hour and 59 minutes.
Royals starter Zack Greinke (1-11) was going for his 225th career victory, but took the loss after giving up four runs and four hits in five innings. He struck out one and didn't walk a batter
Nicky Lopez had two hits and an RBI for the Royals, who have dropped six of seven
Naylor took advantage of a 2-2 fastball left down the middle, and the No. 9 hitter pulled it over the fence in right center with two outs in the third to give the Guardians a 1-0 lead
Civale did not allow a base hit until Salvador Perez's infield single with two outs in the fourth.
The Royals collected their second hit when Michael Massey singled with one out in the fifth, stole second and took third on a throwing error by Naylor
Lopez, hitting in the No. 9 spot, then came through with a two-out single to drive in Massey and tie the score 1-1.
Naylor's first home run was the only hit off Greinke until Josh Bell doubled with one out in the fifth. Will Brennan followed with a line-drive single that fell a few feet in front of center fielder Kyle Isbel, allowing Bell to score from second for a 2-1 lead.
After getting the second out of the inning, Greinke served up a 3-1 fastball to Naylor and he blasted it over the fence in center for a 4-1 lead.
Austin Cox replaced Greinke to start the sixth and surrendered a leadoff triple to Amed Rosario, followed by an RBI single by Jose Ramirez to make it 5-1.
Kansas City put runners on the corners with no outs in the eighth against Civale, but he got out of his final inning thanks to a double play.
--Field Level Media