When the lights went out, Verstappen made an excellent start and lunged up the inside of turn 1 to overtake Lewis Hamilton for the lead. Charles Leclerc also nailed Valtteri Bottas with a stunning move around the outside into turn 3 to take P3.
Daniel Ricciardo and Sergio Perez both moved up two to P5 and P6 as Ocon and Sainz dropped two. Kimi Raikkonen was the biggest gainer on the opening lap as he climbed to P14 from 17th on the grid.
A problem for Yuki Tsunoda on lap 8 brought out the Safety Car as the AlphaTauri stopped on the outside of turn 10.
The top 10 behind the Safety Car was Verstappen, Hamilton, Leclerc, Bottas, Ricciardo, Perez, Ocon, Sainz, Norris and Alonso.
On the restart, Lance Stroll and Fernando Alonso swapped positions after a terrific tussle through turns 4 and 5.
Pierre Gasly was given a 5-second penalty as the Frenchman was out of position at the start; the front of his car was out of the designated grid box.
Bottas was the first of the big guns to box lap 24 and it allowed the Finn to undercut Charles Leclerc in the Ferrari.
With Hamilton in his DRS zone, Verstappen pitted on lap 25; a slow 4.2s stop looked like it would cost him the lead but Mercedes decided to extend the opening stint with Hamilton.
Hamilton finally responded on lap 29 to leave him with 4-lap fresher tyres vs Verstappen on the medium stint.
After everyone completed their first stops, the top 10 was Verstappen, Hamilton, Bottas, Leclerc, Ricciardo, Perez, Sainz, Ocon, Norris and Stroll.
Stuck behind Verstappen, Mercedes decided to pit Hamilton at the end of lap 42 as the top 3 had a big gap to the rest. Hamilton returned in P3, behind Bottas.
On lap 46, Sergio Perez finally overtook Daniel Ricciardo for 5th place on the outside into turn 1. Ricciardo and Sainz pitted a lap later from P6 and P7 and both fell behind Ocon and Norris. However, they both quickly cleared the Frenchman and Brit to regain those positions.
Lap 52 saw Lewis Hamilton overtake Valtteri Bottas for P2; the Finn was asked to let Hamilton go but seemed reluctant to do so.
Bottas pitted for a second time on lap 54 and rejoined behind Charles Leclerc in the battle for the last podium spot. Three laps later, the Finnish driver eased past the Ferrari to reclaim 3rd.
With 7 laps to go, Hamilton overtook Verstappen on much fresher tyres for the lead of the Grand Prix. The Dutch driver boxed at the end of it to pit for fresh tyres and go for the fastest lap, which he managed to achieve.
A frantic late battle for P10 ensued with Fernando Alonso on old mediums was trying to hang on. However, he got swallowed up by Stroll, Gasly and Raikkonen. Gasly overtook Stroll on the next lap to take the final points-paying position.
Hamilton crossed the line to take a comfortable victory in the end after an intriguing strategy battle. Max Verstappen and Valtteri Bottas finished P2 and P3 to complete the podium positions.
Charles Leclerc was an outstanding P4 for Ferrari, with Perez, Ricciardo, Sainz, Norris, Ocon and Gasly completed the points scorers in Spain.