Hamilton had slipped into third place after restarting the safety car when Alfa Romeo’s Kimi Raikkonen collided with Antonio Giovinazzi’s left rear wheel on lap seven.
But 36-year-old Hamilton overtook Verstappen on lap 11 and nine laps later raced past Bottas, who had started in pole.
After leading the way at the Algarve International Circuit, Hamilton never looked back and won by a comfortable 29.148 seconds margin.
The win for Hamilton is his second win of the season and brings him eight points ahead of Red Bulls Verstappen in the title standings.
“It was such a tough race physically and mentally,” Hamilton told reporters after the race. “Everything wasn’t perfect today, so we’re going to look at those areas and flip the stones.”
The seven-time world champion will try to extend his lead in the title standings at the Spanish Grand Prix on May 9th.