Lewis Hamilton survived a late collision with Max Verstappen to deliver the perfect tribute to Niki Lauda by winning an eventful Monaco Grand Prix.

Hamilton, sporting a one-off red helmet in tribute to the Mercedes non-executive chairman who died on Monday, tiptoed his way to the chequered flag on shot tyres, claiming a nail-biting victory - his third on Monte Carlo's famous streets.

With three laps remaining, Verstappen delivered a gung-ho move for glory on the high-speed exit of the tunnel and into the chicane - his right-front wheel hitting Hamilton's rear left in a flurry of sparks.

But both men made it to the finish. Hamilton spent much of the race taking aim at his Mercedes team for putting him on the less-durable medium tyres during the only round of stops.

"I don't know what you were thinking," he said to them over the radio with 20 laps remaining.

"You need to hope for a miracle."

Yet, despite Verstappen hustling him all the way, and then banging wheels, Hamilton somehow managed to hold on, emulating his 2008 and 2016 victories in the principality.

Verstappen was demoted to fourth after he was hit with a five-second penalty following an earlier collision in the pit lane with Valtteri Bottas. That promoted Ferrari's Sebastian Vettel to second with Bottas completing the podium places.