Despite thoughts that the circuit would favour championship leaders Red Bull, the Ferrari driver set a weekend-best time of 1m41.359s to land his sixth pole of the season.
He finished the session 0.282s ahead of Red Bull's Sergio Perez in second, with points leader Max Verstappen in third.
Leclerc says he "really struggled to see that we were faster" before "everything came together" in his last lap.
He said: "It feels good this one. Obviously all pole positions feel good. But this one I probably did not expect it because I thought Red Bull was stronger, especially in Q1 and Q2, I really struggled to see that we were faster.
"But then in the last lap, everything came together. And again, I managed to do a good lap so extremely happy."
Former championship leader Leclerc, who has not won a race since the third round in Australia, was 0.05s adrift of teammate Carlos Sainz after the first batch of quick laps in the final shootout for pole.
But on his final run, he set the fastest first and second sectors of the day to have a massive half-second cushion ahead of the flat-out run to the line.
Leclerc says he is "really excited" for Sunday's race, but warned that tyre management could play a big part.
He added: "I'm really excited for tomorrow. I think we'll have quite a bit of tension tomorrow because tyre management is a big thing here.
"In Barcelona and Monaco, I think we were managing it well. Even though Monaco it was difficult to see anything.
"But overall, our race pace has done a step up since we brought the upgrade. So tomorrow it will be very interesting whether it will be the case here too."
Leclerc sits just nine points behind Verstappen in the drivers' standings, with the gap he had built at the start of the season quickly reversed by the reigning champion despite suffering early reliability issues.
Sainz will line up fourth for tomorrow's race, with George Russell in fifth for Mercedes hoping to continue his run of top five finishes in every race so far this season.