The Pramac rider led from the off, and despite VR46 rider Bezzecchi attempting a fightback after passing Francesco Bagnaia for second, Martin held on for his second consecutive podium.
Despite both carrying injuries after separate incidents in last weekend’s Catalan GP, home favourites Bezzecchi and championship leader Bagnaia completed the podium.
It was far from easy for the Ducati factory rider, who was passed by Bezzecchi early on before having to hold off KTM wildcard Dani Pedrosa and Brad Binder, who had a strong charge from seventh.
With Martin getting the holeshot, Pedrosa made up a place off the line, passing Aprilia rider Maverick Vinales for fourth, as further back Binder fell three places to 10th.
Martin was already 0.5s clear of Bagnaia by lap two, and the reigning world champion then ran wide to let Bezzecchi, struggling with an injured hand, through.
Behind, Binder forced his way past Honda’s Marc Marquez, Aleix Espargaro (Aprilia) and VR46’s Luca Marini to run sixth.
Binder then attempted a move on Vinales at Turn 6, but was forced to fall back as the Aprilia man put in a staunch defence.
Bezzecchi had sliced the gap to Martin from a second to 0.5s by lap four, with a further 1.8s back to Bagnaia.
Binder passed Vinales on lap six as he continued his charge, as maligned Honda rider Joan Mir was handed a long-lap penalty for exceeding track limits before receiving a second for failing to serve the first properly.
The gap between Martin and Bezzecchi stabilised around 0.7s by the halfway mark, while further back Alex Marquez (Gresini) passed brother Marc for ninth, the final points paying position.
With five laps remaining, Pedrosa was closing on Bagnaia, with the gap down to 0.4s by lap eight as Bezzecchi stalled in his charge to catch Martin.
A fierce battle for third ensued, with Binder then catching Pedrosa as the KTM duo fought to catch Bagnaia.
Despite having severe bruising on his right leg after last weekend’s crash, Bagnaia managed to hold off both riders for the podium.
Pedrosa kept Binder behind to take his best result since Valencia 2017, with Vinales sixth ahead of Marini. Espargaro was ninth, ahead of the Marquez brothers.
Franco Morbidelli initially failed to get off the grid on his Yamaha machine, and though he got going, was also handed a long lap penalty for exceeding track limits but was handed a three-second penalty for failing to serve it.
Pol Espargaro met the same fate, as did Mir and Honda test rider Stefan Bradl, while Pramac rider Johann Zarco was dropped one position to 14th after exceeding track limits on the last lap.
Martin’s victory cuts Bagnaia’s lead in the standings from 50 points to 45 with eight rounds remaining after this weekend.