Hamilton had slipped to third after a Safety Car restart caused when Alfa Romeo’s Kimi Raikkonen collided with Antonio Giovinazzi’s left rear wheel on lap seven.
But the 36-year-old Hamilton overtook Verstappen on lap 11, eventually racing past Bottas, who had started in pole, for the lead nine laps later.
Once he had pulled ahead at the Algarve International Circuit, Hamilton never looked back, winning by a comfortable 29.148 second margin.
The victory for Hamilton is his second of the season and puts him eight points ahead of Red Bull’s Verstappen in the title standings.
“That was such a tough race physically and mentally,” Hamilton told reporters after the race. “Today wasn’t all perfect so we’ll look at those areas and turn over the stones.”
The seven-time world champion will look to extend his lead in the title standings at the Spanish Grand Prix on May 9.
You may also like
Super League: UEFA forced to drop disciplinary proceedings against remaining clubs
Simone Biles says she ‘should have quit way before Tokyo’
Kyrie Irving: NBA star the latest to withhold vaccination status
Roger Hunt: English football mourns death of Liverpool striker and World Cup winner
‘Every single time I lift the bar, I’m just lifting my country up’: Shiva Karout’s quest for powerlifting glory