Valtteri Bottas withstood a late charge from Lewis Hamilton to win Formula 1's Azerbaijan Grand Prix and atone for his heartbreak at the end of last year's race in Baku.
Twelve months after being denied victory by a late puncture, Bottas held his nerve under pressure to lead Hamilton home and regain the lead of the championship.
As Mercedes clinched its fourth one-two in four races at the start of the 2019 season, Sebastian Vettel could only finish third again for Ferrari.
Vettel's teammate Charles Leclerc recovered to fifth, behind Max Verstappen's Red Bull, after the qualifying crash that left him ninth on the grid.
Hamilton got the better start from the front row but Bottas held on around the outside of the first two corners and then built a strong margin through the rest of the lap.
Bottas kept Hamilton at arm's length until pitting on lap 12, one lap after Vettel and one lap before Hamilton.
That meant Bottas resumed in a net lead, but stopping two laps earlier than Hamilton drew Vettel closer to the second Mercedes.
The pace of the medium tyre was stronger than the soft, as demonstrated by Leclerc – who fell to 10th on the first lap but had charged to fourth by lap 10.
Leclerc, on new mediums following his crash in qualifying, assumed the lead when the top three pitted to get rid of their soft tyres.
He led the middle portion of the race, managing his pace effectively to stay ahead until Bottas finally got into DRS range and cleared the Ferrari into the first corner on lap 32 of 51.
Hamilton took another lap to get ahead of Leclerc, which gave Bottas more breathing space after Hamilton had whittled the advantage down to almost nothing.
Bottas had a two-second lead to protect once the Mercedes one-two was restored, and Hamilton's attempts to cut into that were hit when Pierre Gasly ground to a halt and caused a virtual safety car.
Gasly had charged from the pitlane up to a comfortable sixth but his Red Bull, fitted with an upgraded Honda engine for this weekend, had to be parked up on lap 39.
The two-lap VSC also helped Bottas by giving him an extra one second over his pursuers, presumably as it ended in a favourable position for the leader.
Hamilton chipped away at that margin and with three laps to go got within DRS range of his teammate.
Just as Hamilton looked like he might be about to launch a last-lap pass, Bottas picked up DRS himself down the start-finish straight as he lapped the Williams of George Russell.
That top-speed boost put Bottas 1.4s clear as he started the final tour, and he finished it 1.5s ahead to clinch his second win of the season.
Vettel ended up a lonely third, never quite close enough to attack a Mercedes but equally not under threat from Verstappen at the end.
Verstappen had a quietly effective race and looked like he could mount an attack on Vettel but fell away once the VSC period ended.
Leclerc finished almost a minute adrift of Verstappen after a second pitstop for another set of fresh soft tyres, which let him steal the fastest lap bonus point from Bottas.
Sergio Perez earned best-of-the-rest honours for Racing Point, finishing sixth to continue his fine record in Baku.
Though a third Azerbaijan podium was never on the cards, Perez was the class of the midfield after clearing early sixth-place runner Daniil Kvyat and never looked like being challenge.
Carlos Sainz finally opened his account for McLaren in seventh place, but only after twice overhauling teammate Lando Norris.
McLaren celebrated its first double points finish of the season as Norris came home eighth, while Racing Point also got two drivers in the top 10 as Lance Stroll clinched ninth.
Kimi Raikkonen scored an unlikely point to keep his record of finishing in the top 10 every race this season, despite starting from the pitlane after his Alfa Romeo failed a front wing deflection test.
Among the four retirements were Kvyat and Daniel Ricciardo, who have been summoned to the stewards over a bizarre incident in which Ricciardo reversed into Kvyat trying to get back on track after a failed overtaking attempt at Turn 3.
|4||Max Verstappen||Red Bull||17.493|
|6||Sergio Perez||Racing Point||1'16.416|
|7||Carlos Sainz Jr.||McLaren||1'23.826|
|9||Lance Stroll||Racing Point||1'43.816|
|10||Kimi Raikkonen||Alfa Romeo||1 Lap|
|11||Alex Albon||Toro Rosso||1 Lap|
|12||Antonio Giovinazzi||Alfa Romeo||1 Lap|
|13||Kevin Magnussen||Haas||1 Lap|
|14||Nico Hulkenberg||Renault||1 Lap|
|15||George Russell||Williams||2 Laps|
|16||Robert Kubica||Williams||2 Laps|
|Pierre Gasly||Red Bull|
|Daniil Kvyat||Toro Rosso|