Seven-time world champion Lewis Hamilton overtook main rival Max Verstappen and Mercedes team mate Valtteri Bottas to win the Portuguese Grand Prix on Sunday and go eight points clear in the Formula One standings.
Red Bull's Verstappen finished second at the Algarve circuit with Bottas third after starting on pole position. The disappointed Finn's only consolation was a bonus point for fastest lap.
The victory was a record-extending 97th of Hamilton's career, with the sport's most successful driver repeating last year's win at the circuit to go 2-1 up on Verstappen after three races.
"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 the Briton, who started on the front row.
"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 was quick to pounce and pass Hamilton for second place but the Briton seized it back five laps later after the Red Bull driver made a small mistake.
"I tried to put the pressure on Valtteri. But in the end I think we just lacked a little pace overall so Lewis got by again," said the Dutch driver.
Hamilton swept past Bottas on lap 20 of 66 and took the chequered flag 29.148 seconds clear of Verstappen after the Dutch driver had pitted in a late 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 only pitstop. "Right on the limit, but great race."
Hamilton now has 69 points to Verstappen's 61, with Mercedes 18 points clear of Red Bull in the constructors' standings.
Verstappen -- continuing his best start to a season -- had passed Bottas for second place on lap 37 after pitting a lap earlier than the Finn and making the most of warmed-up tyres when Bottas slid wide.
Red Bull's Sergio Perez, Bottas and then Verstappen pitted one after the other in the closing laps to try and bag the bonus point. Hamilton could also have done so but decided the risk was not worth taking.
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.
Bottas had also complained of losing power, a problem the team tracked down to a faulty sensor and that they were able to resolve.
Perez was fourth with McLaren's Lando Norris fifth and Charles Leclerc sixth for Ferrari.
Alpine pairing Esteban Ocon and Fernando Alonso, who had a lively battle with compatriot Carlos Sainz in the second Ferrari, were seventh and eighth.
Australian Daniel Ricciardo was ninth for McLaren, after starting 16th, and Pierre Gasly took the final point for AlphaTauri.
There was disappointment for Williams, who had hoped for their first points of the year after George Russell qualified 11th. He finished 16th.
"Probably one of the toughest races I've personally had since 2019, when the car was so far off." said the Briton. "It was a race of survival just trying to keep the car on the track. I couldn't battle with anybody."
Raikkonen was the only retirement of the afternoon.