Piastri was perfect in the face of immense pressure from Charles Leclerc through the latter half of the race to record a brilliant victory.
Leclerc faded in the closing laps, holding on only as Sergio Perez and Carlos Sainz crashed out on the penultimate lap.
The race ended under Virtual Safety Car after Sainz and Perez clashed out of Turn 2, ending a superb and important drive for Perez.
That left George Russell third and Lando Norris fourth, ahead of Max Verstappen in a race where the Dutchman was uncharacteristically uncompetitive.
At the race start, Leclerc jumped from pole to hold the advantage into Turn 1, Piastri dropping in behind as Perez stole third from Sainz as the pack rounded Turn 2.
Behind, Russell lost out to Verstappen who quickly latched on to the back of Sainz.
Norris made early gains, too, rising to 13th by the end of the opening lap, a two-place gain over his starting place.
That became 12th as he engaged in a four-way scrap down the front straight, pinching the place from Nico Hulkenberg.
They were tucked up behind Yuki Tsunoda, who lost more than three seconds to Oliver Bearman in 10th.
Norris cleared the RB driver at Turn 2 on Lap 3, getting better drive out of the first corner.
Tsunoda then fell behind Hulkenberg as he was wrong-footed by the charging McLaren.
At the end of the lap, Tsunoda appeared to blend out of the throttle on the front straight, allowing Daniel Ricciardo and Pierre Gasly through, with Hamilton finding a way by soon after.
The Japanese driver had made contact with Lance Stroll on the opening lap, the Aston Martin driver picking up a puncture from the clash that saw the RB tagged on the right-rear wheel.
The front of the race had opened up, Leclerc inching out of DRS range of Piastri, who in turn was clear of Perez, the front six cars in train but not in touching distance of one another.
They had however pulled clear of Fernando Alonso, Franco Colapinto, and Alex Albon, who ran seventh, eighth, and ninth, that group in turn clear of Oliver Bearman in 10th.
That became Norris in 10th on Lap 9 when the McLaren driver moved beyond the Haas and into the points for the first time in the race.
Bearman was fading, with Hulkenberg soon on his gearbox, while Ricciardo was beginning to close in too after losing time behind Tsunoda in the opening laps.
Leclerc soon turned the wick up, lapping four-tenths faster than Piastri who appeared to be struggled on his medium compound tyres.
The Ferrari driver looked to have managed the opening laps to bring his tyres in before beginning to walk away at the front of the race.
That message was relayed to Norris in the other McLaren, who’d started on the hard rubber, though was lapping some three-tenths slower than his team-mate.
Colapinto taking to the lane at the end of Lap 10 heralded the start of the pit stop cycle.
Verstappen boxed from a lonely fifth place, Russell following him in at the end of Lap 12.
The Dutchman had complained of a lack of bite as he struggled to match the pace of the leading four – though Leclerc was unrivalled with his pace out front.
Perez was in from third next time around, feeding out into sixth, ahead of the two Haas drivers.
The Mexican was a threat to Piastri, his new tyre pace opening the undercut.
It prompted McLaren to employ Norris in defence of his team-mate, slowing the Red Bull Racing driver through the middle third of the lap on Lap 15.
Piastri pitted at the end of the lap, emerging narrowly ahead of Perez, justifying McLaren’s call.
With a comfortable six-second advantage prior to the stops, Ferrari was able to easily cover off the second-placed battle when he stopped after 16 laps.
He emerged somewhat closer than expected, though with Alex Albon between himself and Piastri.
The McLaren driver used DRS to clear the Williams at the start of Lap 18, Perez not close enough to follow him through to give Piastri a little breathing space.
An extra lap behind Albon proved costly, dropping him more than two seconds back from Piastri, who had closed back within DRS range of Leclerc.
He pounced into Turn 1 on Lap 20, Leclerc immediately trying to fight back, his efforts covered easily by Piastri.
Leclerc had made no attempt to defend the move and appeared to have been caught by surprise by the Australian who made a bold, decisive move.
The Monegasque remained in contact and, courtesy of DRS, was able to challenge at the end of the next lap.
But Piastri was unflappable, not being drawn into defending free air as the Ferrari was close but not close enough to mount a serious threat.
The Australian remained under pressure, however, never clear of DRS range.
It remained that way until Lap 28 when Leclerc was closer through the middle sector, enabling him to challenge into Turn 1.
Piastri saw it coming and defended the move, forcing Leclerc to the outside to hold the place.
The McLaren driver appeared to be struggling for grip, while Leclerc’s tyres appeared to be coming back to him.
Piastri defended again at the start of Lap 31, a needed move though the challenge was less significant than it had been a few laps prior.
Leclerc challenged again at the start of Lap 33, forcing the race leader to be far more aggressive in his defence.
Exiting Turn 1, Piastri swept back across the road to prevent his rival from ducking underneath on exit, though in reality Leclerc didn’t have the traction to make the secondary move anyway.
That scrap delayed the pair such that Perez, who’d fallen just over a second behind the front two, back into contention.
Though focus remained firmly on the battle at the front, Verstappen in the pack was struggling.
He was locked in battle with Russell for sixth, the pair chasing Norris who remained one of the few drivers yet to stop.
Verstappen was in no-mans land. The early stop locked him in to a one-stop approach as, in his battle with Norris, he was trapped.
Pitting again would have left him behind the faster McLaren, while hanging on with worn hard tyres potentially left him vulnerable in the latter stages.
It meant the Red Bull driver had to remain on track as he struggled for grip and pace.
As the battle on track between Leclerc and Piastri continued, the pit wall got involved too with dummy messages to the Monegasque driver.
Norris finally pitted after 38 laps, swapping onto the medium tyres.
It left him in seventh and in free air, 15 seconds back from Verstappen with a significant tyre advantage.
The delta between the pair, with 12 laps remaining, was a second a lap immediately out of the pits.
Out front, Piastri again was forced to defend at the start of Lap 41 as Leclerc used DRS to challenge once more.
The door was again kept firmly closed by the Melburnian, though there were subtle signs of nerves creeping in as the race entered its final stanza.
A lap later, Piastri moved across to defend despite Leclerc offering no challenge, the first time the Australian had felt the need to move without provocation.
It followed a mistake exiting Turn 16 as the front two mounted the exit kerb to drift their way through to exit.
The pair remained locked together, the Ferrari driver trying again with six laps remaining only to again be met by the inch perfect defence of his young rival.
Behind them, Norris was charging.
The gap to Norris had reduced to five seconds as he lapped 1.5 seconds faster than his title rival.
Race leader Piastri was still under intense pressure, kissing the wall exiting Turn 15 on Lap 45.
A lap later, he’d broken free of DRS range down the front straight, extending that on Lap 47.
In second, Leclerc was getting scrappy as he began struggling for rear grip, leaving him vulnerable to Perez.
Piastri was clearing out in the lead as the battle for second heated up.
Leclerc defended his place into Turn 1 on Lap 50, opening the door for Sainz to pass Perez for third.
However it wasn’t done there as the Red Bull Racing driver and second Ferrari came together, sliding into the wall exiting Turn 2 and out of the race.
With the Virtual Safety Car deployed, and little more than a lap remaining, it confirmed Piastri as race winner.
Leclerc held on in second with George Russell promoted to third.
That left Norris fourth with Verstappen fifth, the former also picking up then bonus point for fastest lap.
Rounding out the top 10 were Fernando Alonso, Alex Albon, Franco Colapinto, Lewis Hamilton, and Oliver Bearman.
McLaren now leads the constructors’ championship by 20 points over Red Bull Racing while Verstappen’s advantage remained 59 points over Norris with seven races remaining.