Lewis Hamilton secured top spot in qualifying to hand Mercedes its 100th Formula 1 pole position ahead of Sebastian Vettel's Ferrari.
Hamilton set a time good enough for pole with his first attempt in Qualifying 3 before improving with his second effort as the chequered flag fell.
Meanwhile Vettel will have questions to answer after a late call saw him called onto the weighbridge as conditions closed in at the start of Qualifying 2.
His impatience saw the German not switch off the engine before damaging the scales as he left, prompting his referral to the stewards.
As qualifying began the threat of rain saw almost the entire field head out of the lane.
Verstappen posted the early running with a 1:08.025s lap, while the two Ferraris set identical times to sit 0.247s back from the Red Bull in second and third.
As the session moved into its second half drivers began reporting spots of rain, slowly creeping over the circuit starting from Descida do Lago and Juncao on the north-eastern end of the circuit.
The short lap saw a compact field, Carloz Sainz eliminated despite being just 1.064s off Verstappen's pace.
A brace of laps late in the session weren't enough for Brendon Hartley who failed to make the cut, along with Fernando Alonso, Lance Stroll, and Stoffel Vandoorne.
Mirroring the urgency from the beginning of the session, the field streamed straight out onto the circuit at the beginning of Qualifying 2 as light rain was expected to intensify as the session progressed.
Running a contrary strategy with a view to the start of Sunday's race, Raikkonen headed out on the yellow side walled soft tyres, rather than the supersoft rubber fitted by the remainder of the field.
His team-mate was caught at the weighbridge following his first Q2 lap delaying Vettel's chance to copy Raikkonen's tyre strategy.
With conditions closing the impatient German was referred to the stewards for not shutting off the engine as instructed by officials, before damaging the scales as he left the weighbridge under his own power.
On track Bottas set the running with a 1:07.727, less than a tenth up from Hamilton before Vettel banked his soft rubber flying lap to split the two Mercedes.
Expecting a five-place grid penalty, Ricciardo also opted for the yellow walled tyre.
A mix up between Sergey Sirotkin and Hamilton saw the Williams driver have to drop two wheels onto the grass as the Mercedes driver was caught in the middle of the road as the Russian looked to set a lap.
It followed another incident earlier in the lap with Raikkonen as he toured the back straight in the middle of the circuit, forcing the Ferrari driver to take evasive action.
Hamilton had tried a lap on the soft compound tyre, his effort coming once the circuit had already given up the best of its grip and therefore not an improvement.
The deteriorating conditions saw the field back in the lane with five minutes remaining, only a handful of drivers emerged in the closing moments.
A stonking lap from Charles Leclerc saw the Sauber driver banked the 8th fastest time to push Kevin Magnussen, who was sat in the garage, out of the session.
He joined the two Force Indias of Sergio Perez, Esteban Ocon, Nico Hulkenberg, and Sirtokin who were all eliminated.
The threat of rain receded for the start of Qualifying 3 leaving the Ferraris of Raikkonen and Vettel to top the timesheets before being first split by Bottas before Hamilton edged Vettel's best with a 1:07.301s.
Bottas was unable to improve with his final lap while behind him on track Hamilton improved to extend his advantage, a time that withstood the challenge to secure Mercedes its 100th Formula 1 pole position.
Behind Raikkonen were Verstappen, Ricciardo, an impressive Marcus Ericsson, Leclerc, Romain Grosjean, and Pierre Gasly.
The Brazilian Grand Prix is scheduled to begin at 0410 AEDT on Monday morning.
Results: Formula 1 Brazilian Grand Prix, Qualifying
Pos | Driver | Team | Q1 | Q2 | Q3 |
1 | Lewis Hamilton | Mercedes | 1:08.464 | 1:07.795 | 1:07.281 |
2 | Sebastian Vettel | Ferrari | 1:08.452 | 1:07.776 | 1:07.374 |
3 | Valtteri Bottas | Mercedes | 1:08.492 | 1:07.727 | 1:07.441 |
4 | Kimi Räikkönen | Ferrari | 1:08.452 | 1:08.028 | 1:07.456 |
5 | Max Verstappen | Red Bull Renault | 1:08.205 | 1:08.017 | 1:07.778 |
6 | Daniel Ricciardo | Red Bull Renault | 1:08.544 | 1:08.055 | 1:07.780 |
7 | Marcus Ericsson | Sauber Ferrari | 1:08.754 | 1:08.579 | 1:08.296 |
8 | Charles Leclerc | Sauber Ferrari | 1:08.667 | 1:08.335 | 1:08.492 |
9 | Romain Grosjean | Haas Ferrari | 1:08.735 | 1:08.239 | 1:08.517 |
10 | Pierre Gasly | Toro Rosso Honda | 1:09.046 | 1:08.616 | 1:09.029 |
11 | Kevin Magnussen | Haas Ferrari | 1:08.474 | 1:08.659 | |
12 | Sergio Perez | Force India Mercedes | 1:09.217 | 1:08.741 | |
13 | Esteban Ocon | Force India Mercedes | 1:09.264 | 1:08.770 | |
14 | Nico Hulkenberg | Renault | 1:09.009 | 1:08.834 | |
15 | Sergey Sirotkin | Williams Mercedes | 1:09.259 | 1:10.381 | |
16 | Carlos Sainz | Renault | 1:09.269 | ||
17 | Brendon Hartley | Toro Rosso Honda | 1:09.280 | ||
18 | Fernando Alonso | McLaren Renault | 1:09.402 | ||
19 | Lance Stroll | Williams Mercedes | 1:09.441 | ||
20 | Stoffel Vandoorne | McLaren Renault | 1:09.601 |