Indians closer Chris Perez got Gordon to pop up with the bases loaded in the ninth as Kansas City fell 4-3 to open a critical series in Cleveland.
Both the Royals and Indians are battling for an AL Wild Card spot, with Kansas City (75-59) falling to four games back of Tampa Bay for the last berth.
Ervin Santana (8-9) couldn't go stride-for-stride with Cleveland starter Ubaldo Jimenez (11-9), who struck out 10 and allowed just one run over seven innings.
The Indians (77-66) got all four runs off Santana, who surrendered solo home runs in the second, fifth, and seventh innings. Eric Hosmer made a throwing error in the third that led to Cleveland's other run.
The Royals first baseman made up for his mistake in the sixth, singling in Alex Gordon to cut the deficit to three.
Gordon followed that with a two-run blast in the eighth, the 100th homer of his career, pulling Kansas City to within a run.
The Indians registered just five hits in the victory.