The six-times world champion was beaten to the top spot by Jenson Button last time out at Imola and had been expected to struggle again to take pole.
But a lap time of 1 minute, 15.022 seconds on the 2.876-mile Circuit de Catalunya track -- the German's best of the weekend so far -- was 0.617 seconds faster than his closest challenger. It was his four pole position this season and 59th of his career. Ayrton Senna holds the record with 65 poles.
Schumacher is chasing his fifth victory in five races, which would tie Nigel Mansell's record start in 1992. He has won this race three years in a row and five times overall.
Williams-BMW's Juan Montoya of Colombia was second after a late run during the one-hour session.