World champion Hamilton had to make do with third, with a bonus point for fastest lap, and leads the standings by 63 points over Bottas, while Leclerc moves ahead of team-mate Sebastian Vettel who experienced a torrid time and finished 13th.
The first of a thrilling duel between Leclerc and Hamilton came after their pit stops. After both went past Nico Huelkenberg's Renault, Hamilton attacked and felt he was squeezed off the track by the Ferrari driver in wheel-to-wheel racing.
Leclerc was shown a black and white flag - translating to a warning – for the incident. He then further escaped a penalty when he locked his brakes and cut the chicane on turn two on lap 36 before defending another Hamilton overtaking attempt.
"Some dangerous driving going on," Hamilton said over team radio, but Leclerc's manoeuvre was merely "noted" by race control without an investigation.
There were roars from home fan when Hamilton's mistake eased the pressure on Leclerc, who was able to bring the victory home, taking the chequered flag 0.835 seconds ahead of Bottas.
Monza is red! 🔴
Ferrari's first home win since 2010 Leclerc's second victory in a week Tifosi in overdrive 😍
Verstappen started last and suffered nose damage in traffic, requiring an early pit stop, before the Red Bull driver finished eighth.
Kimi Raikkonen, who began from the pit lane because of changes made to his Alfa Romeo, received a 10-second stop-and-go penalty for starting on incorrect tyres.
Daniel Ricciardo and Huelkenberg were fourth and fifth for Renault, followed by Red Bull's Alexander Albon, Racing Point's Sergio Perez, Verstappen, Antonio Giovinazzi in an Alfa Romeo and Lando Norris in a Mclaren.
* This story has been selected as study material for the National High Schools Quiz final. For more stories click here.