Zarco's best laptime of 1m53.680s beat the existing record of Jorge Lorenzo set in 2008 by 0.247s, and gave him his third premier class pole by 0.202s ahead of reigning champion Marc Marquez's Honda.
Marquez was quickest on the first runs and led on a 1m54.368s, but was then knocked off the top spot by Andrea Dovizioso, who set a 1m54.074s on his works Ducati.
Dovizioso looked good for pole heading into the final stages, but was shunted down to fifth in the final order amid a late flurry of improvements led by Zarco and Marquez.
Danilo Petrucci set a lap just 0.005s slower than Marquez to take the final spot on the front row and end up the best of the Ducati runners on his Pramac-run GP18, while LCR Honda rider Cal Crutchlow edged out Dovizioso for fourth by two thousandths.
Alex Rins completed the second row on the best of the Suzukis behind Dovizioso, ahead of Dani Pedrosa's Honda and Valentino Rossi, who was 0.709s off the pace on the quicker of the two works Yamahas.
His teammate Maverick Vinales was slowest of all in Q2 and the only rider not to get within a second of Zarco, and will start 12th - behind Lorenzo's Ducati, Jack Miller on the second Pramac machine and Andrea Iannone's Suzuki.