Red Bull's Max Verstappen dominated a wet-dry Emilia Romagna Grand Prix to revive his title hopes as rival Charles Leclerc threw away third place with a costly error.
The Ferrari driver was pushing to try to pass Verstappen's team-mate Sergio Perez after a late pit stop when he lost control at the Variante Alta chicane at Imola.
Leclerc had to pit for a new front wing and fresh tyres and dropped to ninth, and could recover only to sixth.
The error enabled Verstappen to slash his deficit to Leclerc from 45 points to 27, moving the Dutchman up from fifth in the championship to second.
Until Leclerc's mistake, the Ferrari driver appeared to be heading for a frustrating but acceptable third place. But in an instant he threw away a significant part of the advantage he had gained thanks to Red Bull's poor early-season reliability.
The fact the error happened at Ferrari's home race, in front of a packed crowd of their passionate Italian tifosi, will have made it feel even worse, especially as Leclerc had emphasised before the weekend the need "to not overdo things" with expectations so high at Imola.
It made for a nightmare race for Ferrari, who had lost Leclerc's team-mate Carlos Sainz on the first lap when the Spaniard was tipped into the gravel by McLaren's Daniel Ricciardo.
The error cost Leclerc seven points - the difference between third and sixth places - and he said afterwards he was "disappointed in myself".
He added: "I tried too much. On that lap, I obviously wanted to give it all but I gave too much and finished into the wall.
"Instead of the third place we lose seven potential points which will be important at the end of the season and today it is my full responsibility. I will look what I have done wrong. The car jumped in a strange way but this is no excuse because I tried to put too much speed and lost the car. Disappointing.
"Red Bull are very strong and they were stronger than us throughout the weekend so we need to understand that, we need to react. Third was the best we could do but we should have been third and I haven't been."
McLaren's Lando Norris took third after an impressive drive, ahead of Mercedes' George Russell, who held off the Alfa Romeo of Valtteri Bottas in the closing stages.
Russell's team-mate Lewis Hamilton had a dire afternoon, stuck behind slower cars throughout and unable to pass and finished in 13th place. He was also lapped by Verstappen.
At the end of the race, Mercedes boss Toto Wolff came on the team radio and apologised to Hamilton, saying: "Sorry for what you had to drive today. I know it was undriveable. This was a terrible race."
Verstappen's dominant drive
Verstappen took a maximum 34 points from the weekend after setting the fastest lap and also winning Saturday's sprint race. It was also Red Bull's first one-two since the 2016 Malaysian Grand PrixThe late drama enlivened what until then may have been the most uneventful race of the season so far, despite the difficult conditions.
Verstappen was in total control after converting his pole position, from winning Saturday's sprint, into a lead at the first corner.
Rain before the start forced everyone on to wet-weather tyres and an apparent off-set in grip between the pole position side of the grid dropped Leclerc from second on the grid to behind Perez and Norris by the time they reached the first corner.
Leclerc repassed Norris on lap eight - the third lap after a restart from an early safety car period caused by the Ricciardo-Sainz collision.
The Ferrari driver bided his time as the track dried and then began to close in on the Red Bull as the time came to change to dry tyres.
Perez pitted first for dry tyres on lap 18 and a fast in-lap by Leclerc ensured that he emerged from his stop a lap later ahead of the Red Bull.
But Perez was able to close in and pass into the second chicane and once in front managed to hold Leclerc at bay until Ferrari made their late gamble and then their driver his mistake.
Perez showed strong pace, but a couple of small errors dropped him to 10 seconds or so behind Verstappen, who sailed serenely on to his second win of the year.
Verstappen said: "You never know with the weather how competitive you are going to be but I think we did very well and this one-two is very deserved."
Best of the rest
Norris was serene in a lonely race behind the big two but comfortably able to hold off Russell once the field had switched to dry tyres.
Russell made a great start to vault from 11th on the grid to sixth on the first lap.
He fought past Kevin Magnussen's Haas and benefited from Leclerc's error but was unable to close on Norris, not helped by Mercedes being unable to adjust his front wing as planned during their pit stop, which meant he was battling with a difficult balance for the rest of the race.
Bottas fought hard to try to pass the man who replaced him at the world champion team but was unable to get close enough.
Leclerc, after his error, managed to pass Magnussen, Aston Martin's Sebastian Vettel and Alpha Tauri's Yuki Tsunoda but he looked distraught with himself after climbing out of the car.
What happened to Hamilton?
Lewis Hamilton spent the first part of the race behind Aston Martin's Lance StrollUnlike Russell, Hamilton was unable to make up ground at the start and his race soon fell into a dispiriting pattern.
The Mercedes' lack of straight-line speed meant he could not pass Aston Martin's Lance Stroll, as he trailed around in 12th place in the opening stages.
He was then impeded by Alpine's Esteban Ocon at the pit stops, and the five-second penalty earned by the Alpine was no consolation as Hamilton now found himself stuck behind Alpha Tauri's Pierre Gasly, again unable to pass in what was one of his worst races for years.
Driver of the day
Verstappen was utterly dominant in Red Bull's most convincing race of the season so far, a performance of such superiority that will doubtless cause some concern at rivals Ferrari.
What's next?
A two-week break before the highly anticipated new race in Miami, a glamorous event in which F1 as a sport has invested much effort and hope.