Sebastian Vettel was relegated down to fifth briefly before regaining the spot and spinning by himself at Ascari afterwards on lap six.
He rejoined in the path of Lance Stroll, spinning the Canadian and he was handed a five-second penalty for the incident.
At the front, Hamilton kept touch with Leclerc and would have a shot at the lead on lap 23, lining up the Ferrari on the approach to Variante della Roggia.
Bottas wouldn’t get by the Ferrari eitherPhoto: Motorsport Images
The two were side-by-side on entry, but Leclerc squeezed Hamilton off the track and held onto his lead.
The Monégasque driver was shown a black and white flag as a warning for the move.
Lap 36 and Hamilton was back on the rear wing of Leclerc for the race lead, this time the Ferrari driver went deep into turn one after a lock-up and cutting the chicane, but still maintained the lead.
The first Ferrari win in Italy since Alonso in 2010Photo: Motorsport Images
On lap 42 it was Hamilton’s turn to lock-up into the first corner, handing second to team-mate Bottas in the process.
Bottas then had the remaining nine laps to overtake Leclerc, the Finn on fresher tyres than the Ferrari driver.
A lock-up for him spelt the end of his hopes for the victory and Leclerc scored his second F1 win.