Bagnaia blasted clear from pole position but briefly lost the lead when spots of rain fell at the end of lap two, as Jorge Martin took the initiative with riders tentatively judging the conditions.
But the rain spots relented and at the start of lap four Bagnaia charged back into the lead at the first corner, and a lap later Bezzecchi repeated the trick on Martin to take second place.
Bagnaia was able to keep clear of any late attacks from the VR46 Ducati rider to clinch his third sprint race win of the season, taking victory by 0.369 seconds, with Martin defending from Pramac Ducati team-mate Johann Zarco to complete the top three.
Bagnaia converted his pole position into the holeshot, while behind him Brad Binder clattered into slow-starting Alex Marquez at the first corner, which sent down the Gresini Ducati rider and earned the South African a long lap penalty.
At the start of the second lap, Martin nipped by Marc Marquez to take second, but moments later the rain flags were displayed which appeared to spook the pack that was uncertain about the track conditions.
This meant a chopping and changing of the order for the following two laps, until the spots of rain drifted away and calm was restored. Bagnaia reasserted himself at the front into Turn 1 on lap four and at the start of lap five title rival Bezzecchi nipped into second place ahead of Martin.
Source: Autosport