Lawson came under big pressure from Piastri in the second half of the race, however his defence was heavily aided by two safety cars.
The Kiwi, who started from second on the grid, hunted down pole-sitter Logan Sargeant throughout the opening lap and managed to take the lead with a move around the outside of Stowe.
A handful of laps later, Sargeant found himself in P3 as his Prema teammate Piastro passed him, also around the outside of Stowe.
Piastri then set his sights on Lawson ahead, and launched an aggressive attack as the race passed the 50% mark. However, his assault was interrupted following a crash involving Bent Viscaal and Jack Doohan.
Viscaal made contact with Ben Barnicoat at Woodcote, and a resulting spin for Viscaal saw him sweep into the path of Doohan, eliminating both from the race.
A safety car was deployed, however only two laps after the race restarted, it was back out on the track again following another incident.
Olli Caldwell spun at the final corner following an incident with another car, and he was subsequently collected by Lucas Dunner, with Max Fewtrell also getting involved.
All drivers were able to step out of their cars and walk away from the crash.
Sargeant held on to take his third podium of the year, while Jake Hughes, who moved passed Vesti earlier in the race, was fourth.
Aleksandr Smolyar, who took pole position for the Feature Race in Hungary, will lead the field for the start of Sunday's race.
Tomorrow's event at the Silverstone Circuit will get underway at 08:45 local time.
Bahrain International Circuit - Winter testing