At the start, Bottas’s soft tyres appeared to give him considerably better grip off the line, as he powered alongside Verstappen despite appearing to react slightly slower to the lights going out.
The Finn was alongside the polesitter at the apex of Turn 1 and surged ahead, as Verstappen quickly came under pressure from Sainz, who had also been given softs for the start and used them to pass Perez for third place at Turn 1.
Sainz was all over Verstappen down the second straight and at the Turn 4 right at the end the pair went side by side, with the latter having to go off track and rejoined behind the Ferrari, Verstappen hitting the kerbs at the edge of the runoff hard as he did so, kicking up a plume of dirt.
But he was able to chase after Sainz as Bottas moved clear in the lead, shadowing the Spaniard for a few laps before using DRS to move back into second with an easy move to the inside of the first corner at the start of the fourth tour of 24.
Verstappen shot after Bottas, setting a string of fastest laps as he closed the Mercedes driver’s lead, which had at one stage with Sainz behind reached 2.5s, to under two seconds as they quickly raced clear of the Ferrari – the leading pair the only drivers able to lap in the 1m12s bracket.
The Dutchman continued to chip away at Bottas’s advantage as the race went on, getting within DRS range by the start of lap 15.
Max Verstappen, Red Bull Racing RB16B
Photo by: Jerry Andre / Motorsport Images
But he was unable to get much closer over the next couple of laps and dropped back beyond one-second adrift as Red Bull told him to “bide your time”.
Heading into the final tours, which featured heavy clouds building up behind Turn 4, Verstappen did surge back to briefly run within the DRS range, but he never got close enough to make a move and he finished 1.1s adrift, as Bottas claimed his second F1 sprint race win of the season.
Bottas will therefore start Sunday’s race from pole ahead of Verstappen – the reverse of how they lined up in this event.
In third, Sainz fended off the attentions of Perez for the rest of the event, coming home 18.7s behind Bottas.
In the pack behind, Hamilton, on the medium tyres, gained five places on the first lap alone, with the world champion immediately getting into 14th at the start of the second tour.
He made steadier progress from there, using DRS to dispatch AlphaTauri’s Yuki Tsunoda and then passing Antonio Giovinazzi and Fernando Alonso to reach the edge of the top 10 by the start of lap nine.
But with Daniel Ricciardo running ahead in 10th, much as was the case for Bottas in last Sunday’s Mexico City race, Hamilton struggled to pass the customer Mercedes-engine-running McLaren.
At the end of lap 12, Hamilton got close enough to Ricciardo to close in with DRS and steam ahead on the outside line to Turn 1 at the start of the next lap, quickly pulling clear to chase Sebastian Vettel’s Aston Martin in ninth place.
Lewis Hamilton, Mercedes W12
Photo by: Steve Etherington / Motorsport Images
After a couple of laps trailing Vettel, Hamilton powered by in near identical fashion to his pass on Ricciardo and then easily raced by Esteban Ocon and Pierre Gasly on the grid hatchings in successive laps to reach seventh place at the start of the 17th tour.
From there he had a few laps in clear air closing the gap to Charles Leclerc, unlike Sainz the second Ferrari driver was running the mediums, with Hamilton reaching the 1m12s just as far ahead the leaders had slipped back to the 1m13s.
At the start of lap 20 Hamilton was right with Leclerc, using DRS to blast by on the inside line into Turn 4 to rise to sixth and head off after Lando Norris, who had earlier muscled his way past Leclerc on his rise from seventh on the grid.
Hamilton roared up to his countryman’s rear as the final laps ticked down, eventually seizing fifth with a bold move to Norris’s inside at the start of the final lap.
He eventually finished just 20.8s behind Bottas, with Norris, Leclerc, Gasly, Ocon and Vettel completing the top 10 in the order Hamilton had passed them.
Hamilton will start 10th for Sunday’s grand prix as a result of his grid penalty for taking a new internal combustion engine for this event.
The only incident of note concerned the two Alfa Romeo drivers, who collided at the Turn 1 apex at the start of the race’s second lap – after they had gone either side of Alonso (who finished 12th) in an early scrap over 11th.
Raikkonen locked up as he swung towards Giovinazzi on the inside of the right-hander, with the Italian’s right-front touching his team-mate’s left-rear and spinning him around and into the runoff at the edge of the track.
Over the rest of the race, Raikkonen recovered two spots to beat the Haas drivers to 18th.