Bezzecchi led all 23 laps of the race from pole, as he headed a four-bike pack made up of Martin, Jaume Masia and Albert Arenas for most of the race.
The Italian only lost first place for two corners when Martin passed him at Turn 3 on lap 20, but Bezzecchi quickly responded and retook the lead.
Martin, who had fractured his left hand in a practice crash a week ago at Brno, had to settle for third in the end.
He was passed by Masia and Enea Bastianini on the last lap, but reclaimed third after a forceful move on the former into the final corner.
Stewards investigated the manoeuvre as Masia had been run out wide, but opted to take no further action.
Bastianini completed a strong late-race charge to second, despite having trailed the lead group until the penultimate lap.
Albert Arenas and Lorenzo Dalla Porta took advantage of the Martin - Masia scrap to pick up fourth and fifth respectively.
Ayumu Sasaki took his best finish of the season in seventh, followed by Gabriel Rodrigo, Tony Arbolino and Aron Canet.
Title contender Fabio di Giannantonio, who took his maiden win at Brno last time around, had to settle for only 11th.
The only rider to crash was Andrea Migno at Turn 10.
|5||48||Lorenzo Dalla Porta||Honda||23||37'14.619||1.421|
|11||21||Fabio Di Giannantonio||Honda||23||37'22.022||8.824|
|16||Andrea Migno||KTM||11||18'06.777||12 Laps|