Valtteri Bottas won an incident-packed first race of the new Formula One season in Austria, as Lewis Hamilton was demoted to fourth following a five-second time penalty.
Bottas, who led every lap in a peerless performance, crossed the line just 0.6 seconds clear of his Mercedes team-mate, but world champion Hamilton was penalised after he was involved in a crash with Red Bull driver Alex Albon in the closing stages.
Ferrari driver Charles Leclerc moved up to second, with British driver Lando Norris taking the first podium of his career to finish third.
Red Bull appeared to have pulled off a tactical masterstroke by pitting Albon for fresh tyres during a second of three safety car periods.
On the restart and with just 10 laps of racing left, Albon moved round the outside of Hamilton at the fourth corner but on the exit the Briton refused to concede the position - with his front-left tyre hitting Albon's right rear.
Albon was launched into the gravel, ending his chances of a dramatic win. The stewards laid the blame at Hamilton's door.
It marked the second time in three races the pair have collided. Hamilton was also penalised for hitting Albon at last year's Brazilian Grand Prix.
The penalty capped a dramatic afternoon for Hamilton, who was earlier sent back to fifth on the grid for a yellow flag infringement in qualifying.
"The race is done and I just feel like moving forwards," Hamilton told Sky Sports.
"It's not been a great weekend for me. Yesterday was entirely my fault. It was a bit odd today in the preparation to all of a sudden get a penalty, but it is what it is and that didn't destabilise me, it just encouraged me to go out there and drive as best as I could. And I feel like I did.
"I had great pace to catch up with Valtteri and then a really unfortunate scenario with Alex. It really felt like a racing incident, but I'll take whatever penalty they feel I deserve and move forward."
The clash between Hamilton and Albon was reminiscent of a similar incident in Brazil last season.
"I wouldn't say this one hurts more, but I feel like Brazil was a bit more 50-50," the London-born Red Bull driver said.
"I felt like I did the move already and I was already focused on Bottas in front. It was so late, the contact.
"There's always a risk overtaking on the outside, but I gave as much space as I really could. I knew that as long as I gave him all the space that I could give him, it's up to him if he wants to crash or not."
Asked whether he would discuss the incident with Hamilton, Albon added: "I'll cool off and I'll come back."
Bottas expressed satisfaction at holding on to the lead he had held since the start.
"There were so many chances for Lewis to get the lead if I made a small mistake, but I managed to keep it together and control the race from my side so there is no better way to start the season," he said.
Leclerc, who started seventh, added: "I didn't expect it. It was a huge surprise but a good one. We did everything perfect to get second and we were lucky with Lewis' penalty, but I am extremely satisfied."
Norris set the fastest lap of the race on the final tour to ensure he would get the jump ahead of Hamilton. The 20-year-old becomes the youngest British driver to finish on a grand prix podium.
"I am speechless," said the McLaren driver. "There were a few points in the race where I thought I had fudged it up.
"I didn't give up and I ended up on the podium. I had to put in some strong laps at the end and as you can see I am out of breath."
Before the start of the race, Hamilton had led 14 of the 20 in taking a knee in a gesture of anti-racism solidarity on the grid.
He wore a Black Lives Matter t-shirt, while other drivers sported T-shirts saying "End racism".
Six of the 20 drivers remained standing during the protest which took place before the playing of the Austrian national anthem.
Ferrari's Charles Leclerc and Red Bull's Max Verstappen had earlier confirmed a split among F1 drivers on the issue of taking a knee, but that they remained committed to fighting racism.
Neither driver took a knee, while Carlos Sainz of McLaren, Danil Kvyat of Alpha Tauri, Antonio Giovinazzi and Alfa Romeo team-mate Kimi Raikkonen also chose not to do so.