Briton Lewis Hamilton won Sunday's Monaco Grand Prix and reignited the scrap for this year's drivers' world championship with a memorable drive for McLaren in a race of treacherous wet and dry conditions.
For the 23-year-old Englishman his first win on the famous Mediterranean street circuit was a dream result in his favourite race.
Hamilton came home three seconds clear of his friend Pole Robert Kubica in a BMW Sauber with Brazilian Felipe Massa third for Ferrari after starting from pole position.
This was the Briton's second win of the season and the sixth of his career.
Australian Mark Webber in a Red Bull was fourth.
Ferrari's defending drivers world champion Kimi Raikkonen of Finland endured a wild race of accidents and incidents and finished ninth, failing to score a point.
This all left Hamilton on top of the title race again for the first time since the season opening race in Australia.
He has 38 points now with Raikkonen on 35 second and Massa third on 34.
Hamilton made a dazzling start and found a way past Raikkonen going into the first corner Ste Devote on the inside to take second behind Massa.
As rain began to fall steadily, and with Hamilton's teammate Heikki Kovalainen starting from the back of the grid following a pre-race stall, the contest turned into a circus of chaos.
There were incidents and accidents with double world champion Spaniard Fernando Alonso involved twice in collisions and Hamilton himself smashing into the barriers on lap six at Tabac.
His rear right tyre was left hanging as he returned to the pits.
David Coulthard had climbed from 15th to the top ten by now but the rain played havoc with the race for several minutes as Alonso, followed by Coulthard and Sebastian Bourdais crashed off into the barriers at Massenet.
Then Raikkonen was given a 'drive-through' penalty because Ferrari had failed to fit his car's tyres properly more than three minutes before the start of the race.
After he had performed his punishment, the running order at the top was Massa followed by Kubica and then Hamilton who had pitted and recovered.
On lap 16, as the field grappled with the wet slippery conditions, Massa spun off and recovered his car at Ste Devote, gifting Kubica the lead in his BMW-Sauber.
The Pole stayed there until he had to pit and that put Massa back in front until he pitted after 32 laps.
Hamilton then took over and opened up a commanding advantage.
He was 16.2 seconds ahead after 38 laps and 25 seconds ahead of the Brazilian by lap 44.
As the track dried out the field settled down with Hamilton inspired by leading. He was 36.7 seconds clear of Massa by lap 52 with the Ferrari driver in turn just half a second ahead of Kubica in third.
Amazingly, the German driver Adrian Sutil, who revels in the special conditions of Monaco, was fourth for Force India at this stage.
It was clear Hamilton was in command providing the weather did not intervene again and his lead was so luxurious he could pit after 53 laps and stay out in front when Massa followed suit three laps later.
Massa's second stop also cost him a position as he was passed 'in the pits' by Kubica.
With 17 laps remaining, Nico Rosberg caused the second Safety Car intervention when he lost control in the swimming pool complex and wrecked his car in a massive accident.
By now, following their pit-stops, the leading drivers have switched from their wet weather tyres to dry tyres and the track had dried considerably - and the Safety Car break meant, also, that Hamilton's big lead was cut back.
When racing resumed, Hamilton raced clear but on lap 68 Raikkonen made a major mistake and lost control of his car as he came out of the tunnel and ran into the back of Sutil.
Both drivers had to pit for repairs, but it was costly for the German as he was forced to retire while the champion rejoined in ninth place.
German Sebastian Vettel picked up points in fifth for Toro Rosso and Brazilian Rubens Barrichello came in sixth for Honda.
Japanese Kazuki Nakajima was seventh for Williams and Kovalainen eighth in the second McLaren after starting from the pit lane.