Seven-time world champion Lewis Hamilton won the Portuguese Grand Prix for Mercedes to stretch his Formula One lead over Red Bull's Max Verstappen to eight points after three races.
Verstappen finished second at the Algarve circuit with Mercedes' Valtteri Bottas completing the podium, and taking a bonus point for the fastest lap, after starting from pole position.
Verstappen's Mexican team mate Sergio Perez was fourth.
The victory was a record-extending 97th of Hamilton's career, second of the year and repeated his win at the same circuit last season.
"That was such a tough race, physically and mentally, just keeping everything together. It was very windy out there so it was very easy to put a foot wrong," said Hamilton, who started on the front row with Bottas.
"I just didn't quite get as good a start as Valtteri and then lost out on the re-start, which was not good. I was not happy about that."
The safety car was deployed on lap two after the Alfa Romeos of Kimi Raikkonen and Antonio Giovinazzi made contact, with debris left on the track and the field streaming through the pitlane.
When racing resumed, Verstappen pounced to pass Hamilton for second place but the Briton seized back the position five laps later.
He then swept past Bottas on track on lap 20 of 66 and took the chequered flag 29.148 seconds clear of Verstappen after the Dutch driver pitted in a bid for fastest lap on fresh, soft tyres.
"I had to make the move early on before the tyres were destroyed and managed to just get him in Turn One," said Hamilton of the key overtake before his pitstop. "Right on the limit, but great race."
Perez and Bottas both pitted in the closing laps to try and bag the bonus point.
Verstappen thought he had it but his lap time was deleted for going wide, with former racer Paul di Resta breaking the bad news in the post-race interviews. The only consolation was that it did not go to Hamilton.
McLaren's Lando Norris was fifth with Charles Leclerc sixth for Ferrari, followed by Alpine pairing Esteban Ocon and Fernando Alonso.
Australian Daniel Ricciardo finished ninth for McLaren, after starting 16th, and Pierre Gasly took the final point for AlphaTauri.
-Reuters