Robert Shwartzman took a big step towards winning the FIA Formula 3 championship by claiming his third win of the season on Saturday at Monza, fighting back from a grid penalty that left him eighth on the grid.

Shwartzman picked his way up the order following Prema Racing teammate Marcus Armstrong, sitting second under the Safety Car following a crash for Red Bull junior Juri Vips that left his car in need of recovery.

Shwartzman ran his teammate close on the restart before being allowed past by Armstrong in a bid by the New Zealander to save his tyres, taking the lead on the run to Parabolica on Lap 15.

The race was put behind the Safety Car for a second time on Lap 19 after a horrific crash for Alex Peroni that saw his car go flying into the air after hitting a sausage kerb at the exit of Parabolica.

Peroni's car was thrown into the air before crashing into the barrier at the exit of the corner. The Australian walked away from the incident, but will go to hospital for further tests as per the Campos team.

The race finished behind the Safety Car with Shwartzman leading from Prema teammates Armstrong and Jehan Daruvala, giving the team a 1-2-3 finish on home soil.

Shwartzman now leads Daruvala by 35 points in the drivers' championship, with Armstrong a further seven behind.

Liam Lawson will start Sunday's race from reverse grid pole after finishing eighth on Saturday.