The 33-year-old Briton managed to steer his Mercedes through a chaotic race and capitalize on his team-mate Valtteri Bottas’ misfortune when a late puncture scuppered the Finn’s chances.
Ferrari’s Sebastian Vettel had looked set to turn pole position into a victory until a second Safety Car intervention left him lunging to pass Bottas and locking-up.
The German finished fourth behind the triumphant Hamilton, Kimi Raikkonen in the second Ferrari and Mexican Sergio Perez of Force India.
The race was heavily punctuated by accidents which included one in which the two Red Bulls of Daniel Ricciardo and Max Verstappen collided while fighting for fourth place in the closing stages.
Hamilton leads the world championship on 70 points, four clear of Vettel.
Carlos Sainz finished fifth for Renault and Charles Leclerc sixth for Sauber, his first points finish.
Fernando Alonso finished seventh for McLaren ahead of Canadian Lance Stroll of Williams, Stoffel Vandoorne in the second McLaren and New Zealand’s Brendon Hartley of Toro Rosso.
Download our app and read this and other great stories on the move. Available for Android and iOS.