Gordon made a spectacular catch in left with two men on to end the White Sox sixth and then wound up scoring the winning run on a miscue by Chicago's closer.
Chris Sale had already worked 2 1/3 innings when he came out for the ninth. He retired the first two batters but Gordon drew a walk and went to third on a single by Mitch Maier.
Santos was called on to relieve Sale (2-1) and built a 2-1 count on Billy Butler before uncorking a pitch in the dirt that skipped past A.J. Pierzynski. Gordon slid head first while Santos was late covering the plate.
Gordon scored Kansas City's other run on a single by Jeff Francoeur in the eighth. Carlos Quentin hit a homer for the White Sox in the fifth.
Aaron Crow (3-2) got the win with two innings of relief.