Reliever Bryan Shaw (0-2) started the bottom of the eighth with a walk to George Kottaras and then hit pinch-hitter Elliot Johnson with a pitch before giving way to Rich Hill. The runners advanced on a passed ball and Hill then walked Jarrod Dyson intentionally to load the bases.
With Matt Albers coming in relief of Hill, Perez pinch-hit for David Lough and doubled to left to clear the bases.
Lorenzo Cain had a grand slam and Eric Hosmer hit a two-run home run for the Royals, who won the rubber-match in the series and have won three of their last four games.
Luke Hochevar (2-1) got the win with one inning of hitless relief and Greg Holland picked up his 19th save.
Drew Stubbs had two hits for the Indians, including a two-run home run, and finished with four RBI. Carlos drove in two runs for Cleveland.
Beautician charged with giving client fatal silicone butt injection
McPhee, Cokas 'working on their marriage' after affair