Raffaele Marciello resisted race-long pressure from Daniel Juncadella to win the opening Formula 3 Euro Series at Valencia and keep his title hopes alive.
Polesitter Marciello was slow off the line and lost the lead to fellow front-row starter Felix Rosenqvist. But he was given the lead back when the Swede was given a drive-through penalty for lining up ahead of his grid markings.
Italian Marciello never had more than a one-second lead over fellow Prema Powerteam driver Juncadella, but did not put a wheel out of line for the remaining 22 laps and took his sixth Euro Series win of the year ahead of the Spaniard.
The victory moved Marciello from fourth to second in the Euro Series points, 31.5 behind Juncadella with five races to go and 95 points still available.
Juncadella's result means that he could win both the Euro Series and FIA European titles on Sunday, but only if he wins both of the weekend's remaining races and disaster befalls his title rivals.
Five seconds behind the duelling Prema drivers was Tom Blomqvist, who completed the podium ahead of his Ma-con team-mate Emil Bernstorff.
Blomqvist was hit by Carlos Sainz Jr at Turn 2 on the opening lap. Although the Brit escaped unscathed, the nose of Sainz's Carlin car was broken and he crawled back to the pits to retire.
The only other serious threats to the Prema pair for the title, Will Buller and Pascal Wehrlein, became embroiled in a battle for fifth.
Twice Carlin driver Buller rebuffed attempts by his Mucke rival to pass on the run to Turn 12, but Wehrlein made it past into the final corner on lap 10 to claim the spot.
After his early penalty, Wehrlein's team-mate Rosenqvist battled back up from 12th to eighth. But he was then given a second drive-through after spinning Andrea Roda out of seventh at Turn 2, and finished back in 13th.
That second penalty promoted Sven Muller to seventh, the German having been spun around by his Prema team-mate Michael Lewis early on. Lewis was given a drive-through for his efforts, but still recovered to eighth, ahead of Roda and Luis Sa Silva.
Race one results - 27 laps:
Pos Driver Car Time/Gap 1. Raffaele Marciello Prema Dallara-Mercedes 39m31.289s 2. Daniel Juncadella Prema Dallara-Mercedes + 0.471s 3. Tom Blomqvist Ma-con Dallara-Volkswagen + 4.306s 4. Emil Bernstorff Ma-con Dallara-Volkswagen + 10.979s 5. Pascal Wehrlein Mucke Dallara-Mercedes + 15.789s 6. Will Buller Carlin Dallara-Volkswagen + 38.322s 7. Sven Muller Prema Dallara-Mercedes + 38.810s 8. Michael Lewis Prema Dallara-Mercedes + 58.679s 9. Andrea Roda Zeller Dallara-Mercedes + 1m00.053s 10. Luis Sa Silva Angola Dallara-Mercedes + 1m00.196s 11. Lucas Wolf URD Dallara-Mercedes + 1m04.199s 12. Sandro Zeller Zeller Dallara-Mercedes + 1m08.948s 13. Felix Rosenqvist Mucke Dallara-Mercedes + 1m10.624s Retirements: Carlos Sainz Jr Carlin Dallara-Volkswagen 0 laps