Bottas led from the start and opened up a strong gap as Max Verstappen scrapped with Norris on the opening lap before settling into second.
Norris held third before Hamilton quickly moved past Sergio Perez and then the McLaren driver. He then inherited second after Verstappen hit trouble and dropped to the rear of the field before retiring.
That was one of a total of nine retirements as Ricciardo followed just a couple of laps later. Stroll encountered an ERS failure forcing him to box, followed swiftly by Haas’ Kevin Magnussen.
Magnussen’s stranded car saw the first of three Safety Cars on Lap 27. The restart saw little action.
The second Haas of Grosjean then followed suit, forcing a second Safety Car and a string of second stops as Leclerc, Carlos Sainz, Norris and Alexander Albon stopped for soft tyres.
Just as quickly as we were racing again, a third and final Safety Car was called after Raikkonen’s front-right tyre came loose, forcing him to retire.
George Russell, Albon and Daniil Kvyat also retired from the race, leaving just 11 cars running – Nicholas Latifi the only non-scorer as a result.
Merc trouble and Hamilton penalty
Halfway through the race came the calls for both Mercedes’ cars to ease off, with James Vowles sending an urgent radio call to Bottas and Hamilton to avoid the kerbs, with sensors giving readings of imminent failure.
The pair duly backed off and with the final Safety Car putting Albon behind on fresher tyres, he was in prime position to pounce.
That’s when it all went wrong for a second time…memories of Brazil anyone? Hamilton and Albon collided as the Red Bull driver attacked on the outside. The stewards duly awarding Hamilton a five-second time penalty whilst Albon dropped to the rear.
Leclerc moved up to third, but would be elevated to second with Hamilton’s additional time. That gave Perez and Norris a sniff of a podium and the McLaren racer fought past the Racing Point for fourth, but needed to find 1.5 seconds to snatch third from the six-time champion.
Norris put his foot down and with the fastest lap of the race – on the final lap – and took the final podium spot by just two-tenths.
Sainz went on to take fifth behind Hamilton, but ahead of Perez with Gasly, Ocon, Giovinazzi and Vettel completing the top ten. Vettel had a miserable race after he spun, dropping him to the back where he failed to make up ground.