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.