Lewis Hamilton mastered Shanghai's changing conditions and stayed clear of squabbling rivals to win the Chinese Formula One Grand Prix.
The Briton eased his Mercedes across the line 6.2 seconds ahead of Ferrari's Sebastian Vettel, with Max Verstappen, who started 16th, finishing a surprise third for Red Bull.
It was Hamilton's 54th career win, and a record fifth in Shanghai.
The triple champion's first win this season returned Mercedes to the top of the podium after Vettel won last month's season opening race in Australia for a resurgent Ferrari.
"Well managed, guys," Hamilton told his team on the radio on the cool-down lap.
"We really worked hard for this."
Hamilton, who finished second to Vettel in Melbourne, heads into the next race in Bahrain in a week's time tied on points with the German.
Daniel Ricciardo finished fourth for Red Bull, crossing the line just 0.8 seconds behind Verstappen after hassling the Dutchman in the closing stages of the 56-lap race.
Hamilton started from pole position but the conditions were a bit of a lottery for all the drivers with the track damp in places but drying quickly.
He kept the lead off the line ahead of Vettel who had to defend early on from Valtteri Bottas in the other Mercedes.
Lance Stroll, the 18-year-old rookie, spun off the track on the first lap after making contact with Force India's Sergio Perez. The Canadian beached his Williams in the gravel, bringing out the virtual safety car.
Vettel took the opportunity to dive into the pits to change to dry weather tyres.
His gamble backfired when Antonio Giovinazzi, standing in for Pascal Wehrlein at Sauber, crashed, bringing out the actual safety car two laps later.
That let Hamilton to switch to dry weather tyres without losing position and also allowed both Red Bulls and Vettel's Ferrari team-mate Kimi Raikkonen to jump the German.
Verstappen, who overtook nine cars on the first lap, immediately dispatched team-mate Ricciardo to move up to second.
Vettel, however, found himself stuck behind Ricciardo and the slower Raikkonen, even as Hamilton increased the gap at the front.
By the time Vettel managed to get past, Hamilton was too far ahead.
Raikkonen crossed the line a frustrated fifth.
Bottas finished sixth. The Finn, who has replaced retired champion Nico Rosberg at Mercedes, started third but a spin behind the safety car dropped him down the field.
Fifteen cars finished Sunday's 56-lap race, with neither McLaren making it to the flag.
Fernando Alonso's hopes of a points finish were dashed by a driveshaft failure, while team-mate Stoffel Vandoorne was sidelined with fuel pressure problems.