Dorian Boccolacci took his second career GP3 win in the opening race at Paul Ricard, recovering from an early scare as he stalled on the grid from pole position.
MP Motorsport driver Boccolacci was nearly forced to start from the back of the grid after failing to get away from his grid slot for the formation lap - but he managed to get going again before the final car overtook him.
That meant he could retake his pole position, and a strong getaway ensured Boccolacci led into the first corner ahead of compatriots Anthoine Hubert and Giuliano Alesi.
Boccolacci had stretched a lead of 1.5s by the end of the second lap, with his lead peaking at around three seconds before points leader Hubert fought back late on.
The ART driver was able to close within a second as the final lap began, but fell 0.6s short of the win.
Nikita Mazepin was able to pull off an early pass on Alesi to take the final podium spot, albeit finishing four seconds behind his ART teammate Hubert.
Alesi hung on for fourth ahead of Niko Kari (MP Motorsport), who came out on top in an entertaining early battle over fifth place with the Campos car of Leonardo Pulcini.
Trident pair Alessio Lorandi and Pedro Piquet completed the top eight, the latter scoring reverse grid pole for Sunday's second race.
Joey Mawson (Arden) came under huge pressure from ART pair Callum Ilott and Jake Hughes in the closing stages, but clung on for ninth as Ilott completed the scorers after dropping from seventh to 10th on a dismal opening lap.
Hughes, who passed Ilott for 10th early on only for the positions to be reversed later, was forced out wide at the last corner by Juan Manuel Correa, dropping him to 12th at the flag.
Correa had already courted controversy the previous lap when he tapped Jenzer teammate Tatiana Calderon into a spin at the Mistral Chicane.
MP Motorsport debutant Christian Lundgaard finished 14th from 11th on the grid.
|1||Dorian Boccolacci||MP Motorsport||37'54.388|
|2||Anthoine Hubert||ART Grand Prix||0.673|
|3||Nikita Mazepin||ART Grand Prix||5.034|
|5||Niko Kari||MP Motorsport||10.115|
|6||Leonardo Pulcini||Campos Racing||11.592|
|9||Joey Mawson||Arden International||26.652|
|10||Callum Ilott||ART Grand Prix||26.886|
|11||Juan Manuel Correa||Jenzer Motorsport||27.798|
|12||Jake Hughes||ART Grand Prix||28.091|
|14||Christian Lundgaard||MP Motorsport||28.202|
|15||Simo Laaksonen||Campos Racing||42.542|
|16||Diego Menchaca||Campos Racing||43.005|
|17||Gabriel Aubry||Arden International||43.876|
|18||Julien Falchero||Arden International||48.045|
|19||Tatiana Calderon||Jenzer Motorsport||48.955|
|20||David Beckmann||Jenzer Motorsport||1'03.053|