Ferrari’s new recruit headed Oscar Piastri and Max Verstappen to the flag having led all 19-laps of the encounter.
Lando Norris endured a tough race after a mistake on the opening lap while Liam Lawson charged his way back to 14th from a back-row start.
Jack Doohan was last to the flag after a final lap clash while battling for 18th.
At the start, Hamilton moved immediately across the road to cover off Verstappen, who slotted into second from Piastri and Charles Leclerc.
A mistake midway around the lap saw Norris run wide at Turn 6 and drop two places to sit behind Lance Stroll in ninth at the end of the lap.
Lawson held station in 19th on the opening tour, with Doohan flashing across the line only one place better.
Race leader Hamilton had eased just clear of DRS range of Verstappen on Lap 2, the Dutchman a similar distance clear of Piastri as the top trio began to walk away from George Russell in fourth.
The Mercedes driver had nabbed the place from Leclerc at the end of the opening lap, moving up the inside at the Turn 14 hairpin.
Behind Leclerc, Yuki Tsunoda ran sixth, ahead of Kimi Antonelli and Stroll who completed the points-paying positions in eighth after four laps.
As they battled over 18th, Lawson and Doohan made wheel-to-wheel contact as the Red Bull driver slithered up the inside at the Turn 14 hairpin at the end of Lap 4, an incident noted by officials though there was no further action.
The aggressive New Zealander then made short work of Esteban Ocon, moving through on Lap 6 before setting his sights on his Racing Bulls replacement, Isack Hadjar.
The Frenchman was locked in battle with Sauber’s Gabriel Bortoleto, a scrap that and quickly became a three-way battle when Lawson joined the party.
Ahead, the race leaders were closing on one another, with Verstappen in DRS range of Hamilton, while Piastri was also in range in third.
The lead Ferrari was beginning to suffer with graining, as was Norris who remained buried in the pack behind Stroll.
Lawson was still moving forward, driving around the outside of Bortoleto at Turn 3 as they began Lap 10 as he moved up to 16th.
He’d made light contact with the Brazilian half a lap earlier, taking damage in the brush at Turn 14.
A pit stop for Carlos Sainz soon gave Lawson another place.
Having been unable to capitalise on Hamilton’s tyre woes, Verstappen soon found himself vulnerable to Piastri.
As they started Lap 14, the Dutchman was forced to go defensive into the opening corner as Piastri launched his attack.
Using DRS down the back straight, Piastri was close to striking distance again as they started Lap 15, but he opted to keep his powder dry.
He remained in range through the middle part of the lap, using DRS to scythe up the inside into the Turn 14 hairpin.
Once through, the McLaren driver had no pace to chase down Hamilton, who’d eased out a comfortable margin as Piastri and Verstappen battled over second, the seven-time champ going on to win for the first time for Ferrari.
Piastri took second from Verstappen with Russell in fourth, having held on ahead of Leclerc.
The pair had battled throughout the final lap, Russell gaining the upper hand over the charging Monegasque.
Behind them was Tsunoda, Antonelli, and Norris who stole the final point in eighth.
A late effort to clear Bortoleto saw Doohan come unstuck, the Alpine driver dropping to 20th two corners from the chequered flag.
Pos | Num | Driver | Team | Laps/Diff |
1 | 44 | Lewis Hamilton | Ferrari | 19 Laps |
2 | 81 | Oscar Piastri | McLaren – Mercedes | 6.889 |
3 | 1 | Max Verstappen | Red Bull – Honda | 9.804 |
4 | 63 | George Russell | Mercedes | 11.592 |
5 | 16 | Charles Leclerc | Ferrari | 12.19 |
6 | 22 | Yuki Tsunoda | Racing Bulls – Honda | 22.288 |
7 | 12 | Kimi Antonelli | Mercedes | 23.038 |
8 | 4 | Lando Norris | McLaren – Mercedes | 23.471 |
9 | 18 | Lance Stroll | Aston Martin – Mercedes | 24.916 |
10 | 14 | Fernando Alonso | Aston Martin – Mercedes | 38.218 |
11 | 23 | Alex Albon | Williams – Mercedes | 39.292 |
12 | 10 | Pierre Gasly | Alpine – Renault | 39.649 |
13 | 6 | Isack Hadjar | Racing Bulls – Honda | 42.4 |
14 | 30 | Liam Lawson | Red Bull – Honda | 44.904 |
15 | 87 | Oliver Bearman | Haas – Ferrari | 45.649 |
16 | 31 | Esteban Ocon | Haas – Ferrari | 46.182 |
17 | 55 | Carlos Sainz | Williams – Mercedes | 51.376 |
18 | 5 | Gabriel Bortoleto | Sauber – Ferrari | 53.94 |
19 | 27 | Nico Hulkenberg | Sauber – Ferrari | 56.682 |
20 | 7 | Jack Doohan | Alpine – Renault | 70.212 |