Valtteri Bottas held his nerve against a charging Sebastian Vettel to claim his second Formula 1 victory in the Austrian Grand Prix.
Mercedes driver Bottas fended off a late attack from the Ferrari to secure the win by just six tenths of a second.
Vettel still extended his championship lead to 22 points over Lewis Hamilton, who recovered well from eighth on the grid after his gearbox-change penalty but was denied a podium by Daniel Ricciardo.
Bottas made a lightning getaway from pole position to comfortably lead Vettel into the first corner, although his start was so good it prompted an investigation into whether he had jumped it.
He had to wait 20 laps to be cleared - with the review revealing his reaction to the lights changing was just 0.2s - and by this time had stretched his lead to 7.6s over the chasing Ferrari.
Bottas ran a long opening stint, eventually pitting on lap 41 of 71 and emerging with a reduced lead of just 2.5s.
Vettel engaged in an ebbing-and-flowing pursuit of Bottas, rallying late on and getting within DRS range but eventually falling just short.
An aggressive first lap set Ricciardo on his way to his fifth podium in a row.
Ricciardo attacked Kimi Raikkonen into Turn 1 but had to continue the move all the way up the hill into Turn 3, eventually claiming the place and forcing the Ferrari wide in the process.
Raikkonen dropped behind Romain Grosjean's Haas as a result of Ricciardo's move, and it took two laps for the works Ferrari to finally make it past the customer car at Turn 4.
The longest first stint of any of the frontrunners meant Raikkonen, who stopped on lap 44, fell behind the recovering Hamilton as the strategies played out.
Hamilton had been gifted a place at the start by a clutch-related poor getaway from Max Verstappen, and worked his way past Sergio Perez's Force India and Grosjean in the opening stint as well.
He complained about his tyres once he swapped his super-softs for ultra-softs, but charged in the closing stages and got within DRS range of Ricciardo with three laps to go - though he could not find a way past.
Raikkonen finished a lonely fifth, while Grosjean scored his best result of the season with sixth.
Behind Grosjean came the two Force Indias, with Perez leading Esteban Ocon, while Williams duo Felipe Massa and Lance Stroll charged into the points after a dismal qualifying left them 17th and 18th on the grid.
They were helped by a first-lap collision that was caused when Verstappen started slowly from fifth on the grid and was collected at Turn 1 by Fernando Alonso, whose McLaren had been rear-ended by Daniil Kvyat.
The Toro Rosso driver was handed a drive-through penalty for the incident, which led to Verstappen stopping further round the lap and Alonso returning to the pits immediately with terminal damage.
Kevin Magnussen, who complained of no power steering, and Carlos Sainz Jr were the only other retirements.
RESULTS - 71 LAPS:
|3||Daniel Ricciardo||Red Bull/Renault||6.012s|
|7||Sergio Perez||Force India/Mercedes||1 Lap|
|8||Esteban Ocon||Force India/Mercedes||1 Lap|
|9||Felipe Massa||Williams/Mercedes||1 Lap|
|10||Lance Stroll||Williams/Mercedes||1 Lap|
|11||Jolyon Palmer||Renault||1 Lap|
|12||Stoffel Vandoorne||McLaren/Honda||1 Lap|
|13||Nico Hulkenberg||Renault||1 Lap|
|14||Pascal Wehrlein||Sauber/Ferrari||1 Lap|
|15||Marcus Ericsson||Sauber/Ferrari||2 Laps|
|16||Daniil Kvyat||Toro Rosso/Renault||3 Laps|
|-||Carlos Sainz Jr.||Toro Rosso/Renault||Engine|
|-||Max Verstappen||Red Bull/Renault||Collision|
|9||Carlos Sainz Jr.||29|