But Hamilton's superb lights-to-flag victory was overshadowed by the intra-team politics which threatens to destabilise Ferrari's season.
Hamilton roared off the start line in Shanghai to dash past pole-sitter Bottas to the opening bend.
From there, he ruled the race to secure his second win in succession and assume the championship lead for the first time this season. He is six points clear of Bottas.
The young Ferrari driver will have every right to feel frustrated.
Heading into Formula One's 1,000th race, the question was whether Vettel would remain as Ferrari's number one following Leclerc's strong display last time out in Bahrain.
On lap 11, Ferrari delivered their answer.
Leclerc had got ahead of Vettel at the first turn, but with Vettel less than a second behind the young Monegasque, and claiming he would be able to match leader Hamilton's times, Ferrari instructed Leclerc to move out of his team-mate's way.
Unlike in previous regimes at Ferrari, Leclerc made his feelings clear. "But I'm pulling away [from Vettel]," he protested, before reluctantly moving aside.
Vettel had clear air to catch the Mercedes duo, but failed to make any impression on the leaders.
Indeed, Leclerc remained on the rear wing of his four-time world champion team-mate with Verstappen closing in on both red cars.
"I am losing quite a lot of time," said Leclerc. "I don't know if you want to know or not."
Vettel was given the hurry-up message. Verstappen was then the first of the leading five to stop for fresh rubber.
For the second time, Ferrari reacted by favouring Vettel. He was called in on the following lap for new tyres, and emerged just ahead of the Red Bull car.
The gung-ho Verstappen then launched a move down the inside of Vettel at the penultimate corner - the scene of their collision here last year - but Vettel got the better exit and just about kept Verstappen at bay.
All the while, Leclerc was losing valuable speed on ageing tyres. He pitted four laps later than his team-mate, but by this time he was in no-man's land, and he rejoined the circuit an eye-watering 11 seconds behind Vettel and Verstappen in fifth.
Leclerc was promoted to second when the leaders stopped again, and Ferrari may have hoped that he would get to the end. Yet after a brave, but fruitless defence against Bottas, before Vettel sailed by, Ferrari pulled him in with 14 laps to run.
Out front, a peerless Hamilton was never challenged, and on a weekend dominated by numbers, the five-time champion became the second driver in history after Michael Schumacher to lead 4,000 laps.
It was his sixth win here and 75th in all. Vettel failed to trouble Bottas, finishing seven seconds behind the Finn.
Three races in, Hamilton and Mercedes remain the class of the field.
Elsewhere, British teenager Lando Norris retired after a dramatic first-lap collision. Norris was an unwitting bystander as Daniil Kvyat sent him airborne, and temporarily onto two wheels, after he first barged into Carlos Sainz's McLaren.
The Russian was penalised with a drive-through penalty. Norris stopped for repairs, and limped on, but was unable to make it to the chequered flag.
Final Positions after Race (56 Laps):
1 Lewis Hamilton (Gbr) Mercedes GP 1hr 32mins 06.350secs
2 Valtteri Bottas (Fin) Mercedes GP 1:32:12.902
3 Sebastian Vettel (Ger) Ferrari 1:32:20.094
4 Max Verstappen (Ned) Red Bull 1:32:33.977
5 Charles Leclerc (Mon) Ferrari 1:32:37.626
6 Pierre Gasly Fra (Red) Bull 1:33:35.657
7 Daniel Ricciardo (Aus) Renault at 1 lap
8 Sergio Perez (Mex) Racing Point at 1 lap
9 Kimi Raikkonen (Fin) Alfa Romeo Racing at 1 lap
10 Alexander Albon (Tha) Scuderia Toro Rosso at 1 lap
11 Romain Grosjean (Fra) Haas F1 at 1 lap
12 Lance Stroll (Can) Racing Point at 1 lap
13 Kevin Magnussen (Den) Haas F1 at 1 lap
14 Carlos Sainz (Spa) McLaren at 1 lap
15 Antonio Giovinazzi (Ita) Alfa Romeo Racing at 1 lap
16 George Russell (Gbr) Williams at 2 laps
17 Robert Kubica (Pol) Williams at 2 laps
Not Classified: 18 Lando Norris (Gbr) McLaren 49 laps completed
19 Daniil Kvyat (Rus) Scuderia Toro Rosso 42 laps completed
20 Nico Hulkenberg (Ger) Renault 18 laps completed
Fastest Lap: Pierre Gasly 1min 34.712secs on Lap 55
Register for free to continue reading
Registration is a free and easy way to support our truly independent journalism
By registering, you will also enjoy limited access to Premium articles, exclusive newsletters, commenting, and virtual events with our leading journalists
Already have an account? sign in
Join our new commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies