Verstappen jumped ahead of Norris at the first corner to win the final sprint event of the season by over 4s.
Norris and George Russell (Mercedes) then swapped second place in the early stages, which allowed Verstappen to pull away.
The second Red Bull of Sergio Perez also passed Russell to come through and finish third behind Norris.
Norris led the charge to Turn 1 from pole position but Verstappen sent his car past him down the inside of the Senna Esses, as Russell did likewise to sprint past Perez for third.
Lewis Hamilton (Mercedes) passed Perez for fourth around the outside of Descida do Lago and then Russell passed Norris for second at Bico de Pato. Hamilton and Perez swapped places on lap two, with Perez making it stick a lap later – with Ferrari’s Charles Leclerc also getting involved.
Norris repassed Russell for second on lap five, with Perez picking off Russell three laps later – but the Mercedes driver quickly grabbed the spot back. Perez tried again two laps later and managed to keep the position this time.
Verstappen only pulled 2s clear of Norris with six laps to go, having managed his tyres through the high-speed corners, as third-placed Perez finished well ahead of Russell.
Hamilton was passed by Leclerc with three laps remaining and then Yuki Tsunoda (AlphaTauri) followed suit a lap later.
The best battle on track was for the final point in eighth, as Ferrari’s Carlos Sainz battled hard to keep Daniel Ricciardo (AlphaTauri) and Oscar Piastri (McLaren) behind him. Piastri passed Ricciardo on lap 15, which allowed Sainz to pull clear, but Ricciardo retook Piastri with two laps to go.
Fernando Alonso (Aston Martin) surged through the field after his qualifying shunt with Esteban Ocon (Alpine) to finish 11th, right on Piastri’s tail – despite briefly getting ahead at the start of the final lap.
Norris took pole, ahead of Verstappen and Perez.
Sainz set the fastest time of 1m11.796s, under a tenth clear of Norris, Hamilton and Verstappen.
Falling at the first hurdle were Ocon – who shunted heavily after clipping Alonso at the bottom of the Senna Esses, which red flagged the session – Lance Stroll (Aston), Zhou Guanyu (Alfa Romeo), Alex Albon (Williams) and Logan Sargeant (Williams).
Norris set the quickest time of 1m11.221s, 0.009s ahead of Perez.
Knocked out at this point were the Haases of Kevin Magnussen and Nico Hulkenberg, Pierre Gasly (Alpine), Valtteri Bottas (Alfa Romeo) and Alonso, who didn’t go out after his SQ1 shunt.
Norris grabbed pole with a lap of 1m10.622s, 0.061s ahead of Verstappen.
Perez was a tenth off in third, ahead of the Mercedes duo of Russell and Hamilton.
Tsunoda qualified sixth from Leclerc, Ricciardo, Sainz and Piastri.