The Briton qualified second behind teammate Valtteri Bottas but got the better start to seize the lead into the first turn and lead Mercedes to its third straight one-two finish.
It was a particularly strong result for Hamilton after struggling throughout practice and falling short in qualifying, and he praised his team for its hard work in turning the situation around in time for the race.
“It’s not been the most straightforward of weekend, but what a fantastic result for the team,” he said. “We didn’t know where we would stand with the Ferrari, them being so quick in the last race.
“To have a one-two I think is really special on the 1000th grand prix.
“It’s still very, very close between us all. I really have no idea how the next race is going to turn out.”
Bottas had one brief opportunity to pressure Hamilton into conceding the lead at the second stops, when Mercedes brought him in for new tyres before Lewis, allowing to slash his deficit in a single lap.
But his teammate was unperturbed. The challenge never materialised and Bottas collected the points for second place.
“I lost it on the start,” he lamented. “I got some wheel spin on the start-finish line right in front of my box, so I lost it there.
“On the first stint in the dirty air I couldn’t follow. Otherwise the car was feeling okay otherwise the pace was similar.
“It’s small details, but it’s early days in the season things are looking good.
“I’m really proud for the team. We’ve done three perfect weekends so far.”
Hamilton’s win puts him into the championship lead with a six-point advantage over Bottas, who has a sizeable 21-point lead over the rest of the field.
While Mercedes was serene at the head of the field, the real intrigue of the race came in the battle for third, decided in favour of Sebastian Vettel.
The opening stint of the race was dominated by tension inside Ferrari, with Vettel and Charles Leclerc in third and fourth taking turns urging the team to let them pass their teammate.
Leclerc slipped past Vettel and into third at the first corner, but the German kept himself within a second of his younger teammate and told the team he could lap as fast as the Mercedes duo ahead, who were gradually pulling away.
On lap 11 the team relented and ordered Leclerc to give way to Vettel, but the Sebastian couldn’t pull away. His attempts to break away for marred by messy lock-ups, and Leclerc was soon on the radio telling his team he was losing time.
Before Ferrari could consider switching its drivers back, Red Bull Racing’s Max Verstappen forced the issue by pitting at the end of lap 18. Ferrari opted to pit Vettel in response, keeping him in third, but Leclerc’s stop dropped him behind the Dutchman into fifth.
The second pit stop window was Ferrari’s last opportunity to get Charles back into touch with his teammate, but the team dithered. Whereas Vettel stopped on lap 35 to cover another Verstappen undercut, Leclerc stayed out until lap 47, the Monegasque driver losing time all the while.
When he finally stopped for new tyres he emerged from pit lane with an insurmountable gap to Verstappen, consigning him to fifth.
Vettel was philosophical about the situation after the race, saying that the fundamental problem race wasn’t lax team strategy but a lack of speed.
“I felt I could go faster [than Leclerc],” he said. “I think it’s fair if you saw the whole race, we weren’t able to get Mercedes.
“I had a bit of a race with Max, which was good fun, but the objective was obviously trying to chase [Mercedes] down, but they were just too quick today.
“It was a good result, not a great result.”
Pierre Gasly finished sixth for Red Bull Racing and earnt an extra point for fastest lap, a new rule introduced for the 2019 season.
Daniel Ricciardo scored his first points for Renault with a strong drive to seventh place after teammate Nico Hulkenberg retired with a technical problem just 17 laps into the race, finishing ahead of Racing Point’s Sergio Perez and Alfa Romeo’s Kimi Raikkonen.
But the driver of the day was Thailand’s Alex Albon, who scored the final point for 10th place despite starting from the pit lane.
Albon was unable to take part in qualifying after a crash during Saturday morning practice, forcing him to start the race from pit lane, but a disciplined strategy and some centimetre-perfect racecraft brought him to 10th on lap 35, from where a deft defence of Romain Grosjean in the final laps of the race delivered him the final point of the grand prix.
Don’t forget to listen to Live89.5 each and every Saturday at 9am and 5pm for the Box of Neutrals radio show.