Ferrari's Charles Leclerc finally took his maiden Formula 1 victory after holding off Lewis Hamilton's Mercedes to win the Belgian Grand Prix.
Leclerc dedicated the win to Formula 2 driver Anthoine Hubert, who was killed in a crash on Saturday.
"This one is for Anthoine," he said over team radio after crossing the line. "Feels good, but difficult to enjoy on a weekend like this."
After pulling up in the pits at the end, Leclerc celebrated in fittingly subdued style, pointing at the sticker on his Ferrari dedicated to the memory of Hubert, against whom he had raced on his way through the ranks to F1.
The 21-year-old has come close to wins twice before in his first season with Ferrari, his second in F1, but delivered under pressure at the classic Spa track.
But he had to fight for it as Hamilton closed in to cross the line less than a second behind in a nail-biting finish.
Mercedes driver Valtteri Bottas was third, ahead of the second Ferrari of Sebastian Vettel, who had a disappointing day - outclassed and out-paced by his team-mate.
McLaren's Lando Norris suffered a bitter blow at the end. After a strong race in fifth place after starting 11th, he had a suspected engine failure on the final lap and dropped out of the points.
That elevated Alexander Albon to fifth after a strong drive from 17th on the grid on his first outing for Red Bull.
- Belgian Grand Prix full race results
- Listen: 'This one is for Anthoine'
- F1 pays tribute to Hubert with minute's silence at Spa
- Why the motorsport 'family' races on after a driver pays the ultimate price
Finally Ferrari do it
Ferrari had locked out the front row in qualifying with Leclerc ahead of Vettel, but they always suspected the race would be a more difficult task, and they were right.
Leclerc led away from pole and Vettel managed to re-pass Hamilton up the long straight to Les Combes after losing second at the first corner.
After a safety car following a collision between Kimi Raikkonen's Alfa Romeo and Max Verstappen's Red Bull led to the Dutchman crashing out at Eau Rouge, Leclerc led the first stage of the race, inching away from Vettel as Hamilton began to pressure the German.
Hamilton's pace forced Ferrari to pit Vettel early on lap 15, to prevent Mercedes getting ahead by doing the same, and his pace on fresh tyres meant he was leading by the time Leclerc and Hamilton rejoined from their pit stops six and seven laps later.
But Leclerc closed rapidly on Vettel, who was told to let him by so as not to hold his team-mate up, and after Hamilton also passed Vettel easily with 22 laps to go, the race became a fight between Leclerc and the five-time champion.
Leclerc looked to be in control, but Ferrari were wearing their tyres quicker than Mercedes.
Hamilton was seven seconds behind with 10 laps to go, but then began to carve chunks out of Leclerc's lead and was 1.5secs behind going into the final lap.
There were backmarkers to negotiate but Leclerc held on, to take a first win he has deserved for some time.
What did Leclerc say?
Leclerc would have won in Bahrain, the second race of the season, had he not suffered an engine problem in the closing laps. He also crashed in qualifying in Azerbaijan when looking set to dominate the weekend, and lost the win to Verstappen in Austria with just two laps to go.
But he has come on increasingly strong as the season has gone on, and the suspicion is there will be many more wins to follow this one, now the dam has finally been broken.
But his celebrations were muted by the context of the weekend, a sobering one for all drivers, but especially for Leclerc, who had known Hubert well.
"On the one hand I have realised a childhood dream but on the other it has been a very difficult weekend," he said.
"We lost friend first of all. It is very difficult in these situations. I want to dedicate this win to Anthoine. We have grown up together and my first ever race I did when I was seven with Anthoine. So it is such a shame what happened yesterday. I can't enjoy it fully, my first victory, but it is a memory that will live with me forever.
"It has been a very difficult race, we have been struggling quite a bit with the tyres to the end but I managed the tyres better than in Budapest.
"Mercedes were very quick in the race and we expected that. But it is a good weekend, pole position and first win.
"The end of the race was definitely not easy, he was catching pretty quickly. I had quite a bit of pressure but I kept him behind.
Hamilton, whose championship lead has extended to 65 points over Bottas, said: "I gave it absolutely everything that I had. A really difficult race. The Ferraris were just too quick on the straights.
"I got close at the end, maybe needed a few more laps but congratulations to Charles. His first win, he has had it coming all year and I am really happy for him."
Driver of the day
What happens next?
F1 barely has time to catch its breath before next weekend's Italian Grand Prix, and Ferrari go to their home race at historic, atmospheric Monza, as favourites for a second win in a row.