Lewis Hamilton took a dominant victory in the Chinese Grand Prix to win three consecutive races for the first time in his career.
Hamilton's Mercedes team-mate Nico Rosberg took second, fighting back to beat Ferrari's Fernando Alonso after a poor start left him sixth on Lap One.
Alonso held off Red Bull's Daniel Ricciardo to grab third place.
An unhappy Sebastian Vettel was fifth, beaten by team-mate Ricciardo for the second race in a row.
The world champion refused a team order to let Ricciardo by in the middle of the race but was powerless to stop the Australian passing him.
But Vettel's travails were a mere sideshow to the unanswerable pace of Hamilton, who was in a league of his own throughout.
Hamilton pulled away at about a second a lap in the early stages and was in cruise control for the rest of the afternoon, with less tyre wear and better fuel consumption than his rivals as he circulated serenely at the head of the field.
The win closes his deficit to Rosberg at the head of the championship to four points.
"I just can't believe how amazing the car is and how hard everyone's worked," Hamilton said on the podium. "After the start it was just really racing myself. I'm really happy Nico is up here with us. Great points for the team."
Hamilton is still making up the 25-point hit he took in retiring from the first race of the season in Australia while Rosberg won. The Englishman has won every grand prix since.
Rosberg's race, meanwhile, demonstrated how much more difficult it is even in a dominant car such as the Mercedes if a driver finds himself out of position.
A loss of telemetry before the race may have contributed to a poor start from fourth on the grid and he survived Williams' Valtteri Bottas bouncing over his front wheel on the entry to the first corner to track Hamilton, Vettel, Alonso, Ricciardo and Williams' Felipe Massa on the first lap.
Rosberg passed Massa on lap four, leapfrogged Ricciardo at the first pit stops, overtook Vettel on lap 22 and then set off after Alonso.
The Ferrari driver leapt up to third at the first corner from his fifth-place grid position with a typically sparkling start, despite a side-on collision with Massa.
Alonso hassled Vettel around the first lap, but was forced to settle into third in the opening stint.
He jumped ahead of Vettel into second at the first pit stops and managed to stay there until his second and final stop on lap 33, despite Rosberg moving up on to his tail.
An earlier final stop by Alonso and an error by Rosberg on his in-lap gave Alonso a five-second lead after the Mercedes driver's own final stop four laps later.
But Rosberg unleashed the full pace of the Mercedes over the succeeding five laps and cruised past the Ferrari on the straight on lap 42, with 14 laps to go.
That left Alonso five seconds ahead of Ricciardo and needing to keep the Red Bull driver at bay. He held on by 1.2 seconds, despite suffering from problems with his front tyres.
"It was a good weekend," said Alonso. "We did improve the car a little bit compared to the first three races, so we felt more competitive. Being in the podium is a nice surprise for us.
"I think I'm third in the championship behind these two guys. We didn't have the start of the season we would have liked but we are still in the fight."
Vettel had admitted after being beaten by Ricciardo in qualifying that his team-mate was outpacing him fair and square, and he was outpaced again in the race.
The Australian closed in on Vettel's tail by lap 23, whereupon Red Bull ordered the German to let him by.
"What tyres is he on?" Vettel asked over the radio - his race engineer Guillaume Roquelin told him Ricciardo was on the same tyres as he was but had stopped later.
"Tough luck," Vettel replied.
It appeared as if Vettel tried to hold on but, on the more slippery outside line, slid wide allowing Ricciardo through.
Vettel said he moved over to let his team-mate pass.
Ricciardo simply left him behind thereafter and was more than 20 seconds clear at the end of the race as Vettel concentrated on keeping his advantage over Force India's Nico Hulkenberg in sixth.
Bottas took seventh, from Ferrari's Kimi Raikkonen, who has now been beaten comprehensively by Alonso in all four of his races since returning to Maranello.
Force India's Sergio Perez and Toro Rosso's Daniil Kvyat took the final points positions.
An error by the official waving the chequered flag resulted in the race being shortened by two laps.
Hamilton was shown the flag at the start of his final lap. All drivers continued to race, but the rules dictate that in those circumstances the result must be declared at the end of the previous lap.
This meant that Marussia's Jules Bianchi retained 17th place despite being passed by Caterham's Kamui Kobayashi on the penultimate lap.