Prema's Jehan Daruvala made it two wins in a row as the pole-sitter Jake Hughes clashed with the other Prema of Marcus Armstrong.
Hughes had a strong getaway for the run down to turn one, and was aided by the struggles of championship leader Robert Schwartzman - who tumbled down the order. Meanwhile, Trident's Pedro Piquet had a great start, moving into second initially.
However, Piquet was soon outmatched by the Prema's, who all managed to ease by.
Daruvala closed in on the HWA around the halfway stage of the race - completing an opportunistic overtake into the final corner. But the Brit wasn't done, attempting an overtake into the Mistral chicane; However, Hughes locked up, dropping himself into the clutches of Armstrong.
Two laps later, the Kiwi surpassed Hughes into the chicane, but the battle continued with HWA's man returning the favour on the following lap. This left Armstrong vulnerable to teammate Schwartzman into Signes, but the Russian thought better of it.
Hughes then made an error, leaving him susceptible to the Prema pairing - but things went from bad to worse for Hughes.
The Brit collided with Armstrong's Prema into the Mistral chicane, removing both from contention and promoting Schwartzman and Piquet into the podium places. Moreover, Hitech's Juri Vips had closed up to rostrum contention
Vips himself had moved up from seventh on the grid, battling past Alex Peroni and Bent Viscaal; the latter completed with a superb move into Signes.
But it was Daruvala's day, with Schwartzman completing a Prema one-two and Piquet rounding out the podium, leaving Vips fourth.
Viscaal capitalised on the chaos to score a strong fifth for HWA, with the Dutchman leading home Armstrong who managed to limp home a depleted sixth.
Meanwhile, there was a handful of superb comeback drives. Namely, Yuki Tsunoda, who came through from 27th to finish seventh. Furthermore, Red Bull junior Liam Lawson scored his first-ever Formula 3 points, taking ninth.
As David Beckmann's spirited drive to tenth for ART wasn't enough to life the French outfit's spirits, with neither Christian Lundgaard or Max Fewtrell reaching the checkered flag.
Alex Peroni took reverse grid pole for Campos for Sunday's Sprint Race. He dropped back following his early battles with Viscaal and Vips in the races early exchanges.