The opening segment of qualifying began with a damp circuit and drivers on the intermediates. Valtteri Bottas posted the first flyer of the qualifying hour on a 1:27.247. That was soon beaten by Hamilton, before Raikkonen crushed the Brit's time by 0.8s.
Vettel, Raikkonen, Ricciardo, Verstappen and Hamilton were the top 5 before drivers started to change to slick tyres.
Sainz in the Renault was the first driver on slicks and smashed the fastest time set by Vettel on intermediates instantly.
The times kept tumbling lap by lap and Sebastian Vettel ended up fastest, in front of Verstappen, Bottas Hamilton and Raikkonen. Daniel Ricciardo took a risky gamble to go on softs but made it through in 12th.
A last-gasp lap by Kevin Magnussen saw him move up from last to 10th.
Vandoorne, Leclerc, Ocon, Perez and Sirotkin were the five drivers knocked out in Q1 in a frantic period of qualifying.
16) Stoffel Vandoorne 1:18.782
17) Charles Leclerc 1:18.817
18) Esteban Ocon 1:19.142
19) Sergio Perez 1:19.200
20) Sergey Sirotkin 1:19.301
All the drivers apart from Vettel tried dry tyres at the start of the middle segment of qualifying – but the German made the correct call as the track got wetter again and he logged the opening time of Q2 with a 1:28.636.
Conditions quickly worsened and there was only one chance for drivers to get a time in on the inters. Sainz, Verstappen, Hamilton, Gasly, Bottas, Hartley, Raikkonen, Magnussen and Grosjean managed to get themselves into the top 10.
Lance Stroll crashed and hit the barrier at turn 9 as his session came to an end quite quickly.
Daniel Ricciardo was the shock casualty of Q2, the Aussie ending up down in 12th and out of qualifying. He was joined by Alonso, Hulkenberg, Ericsson and Stroll.
11) Fernando Alonso 1:35.214
12) Daniel Ricciardo 1:36.442
13) Nico Hulkenberg 1:36.506
14) Marcus Ericsson 1:37.075
15) Lance Stroll NO TIME
In the final part of qualifying, the track was very, very wet.
A 1:38.923 by Max Verstappen was the opening attempt in Q3. That was soon well beaten by Hamilton as both Mercedes' posted 1:37s, followed by Raikkonen in P3.
The times tumbled and Raikkonen looked set to possibly take pole. However, brilliant late laps by Hamilton and Bottas locked out the front row for Mercedes. Raikkonen, Vettel and Sainz completed the top 5.
Pierre Gasly was a superb 6th in his Toro Rosso, ahead of Verstappen, Hartley, Magnussen and Grosjean.
1) Lewis Hamilton 1:35.658
2) Valtteri Bottas 1:35.918
3) Kimi Raikkonen 1:36.186
4) Sebastian Vettel 1:36.210
5) Carlos Sainz 1:36.743
6) Pierre Gasly 1:37.591
7) Max Verstappen 1:38.032
8) Brendon Hartley 1:38.198
9) Kevin Magnussen 1:39.858
10) Romain Grosjean 1:40.593