Red Bull's Max Verstappen will start the French Grand Prix on pole, registering a time of 1:29.990.
Lewis Hamilton (Mercedes) finished second 0.258s down on his title rival.
Valtteri Bottas found almost a second on his final lap to take third just behind Hamilton and narrowly ahead of the other Red Bull of Sergio Perez. Carlos Sainz (Ferrari) came fifth.
Hungarian Grand Prix
Ocon secures dramatic first F1 win at chaotic Hungarian GP
"So far it's been a really positive weekend, on a track where it's normally been a bit difficult for us," Verstappen said.
"To get pole position feels really nice. It's a great day. We have to finish it off tomorrow and try and get the 25 points we lost in Baku."
Hamilton was not happy with his car.
"It's been a really, really hard weekend. Mentally, and just trying to get the car into a happy place," he said.
"You wouldn't believe how many changes I've made since Practice One, going round and round chasing our tails and ending up coming back to something similar to where we started.
"I've generally been unhappy in the car all weekend."
Alpha Tauri's Pierre Gasly, Ferrari's Charles Leclerc, McLaren's Lando Norris, Alpine's Fernando Alonso and the second McLaren of Daniel Ricciardo rounded out the top 10.
Hungarian Grand Prix
Chaos in Hungary sees six drivers DNF and Hamilton start on the grid all by himself
Hungarian Grand Prix
‘It just fuels me’ – Hamilton says booing gives him motivation after hostile reception in Hungary