Leclerc claimed pole in qualifying, heading Piastri by 0.154s in a session that saw Max Verstappen fail to fire.
The Dutchman will start only sixth, with Carlos Sainz third and Lando Norris fourth.
Sergio Perez meanwhile will line up 18th, while Daniel Ricciardo will start 13th.
Heading into the session, it promised to be both open and competitive with as many as five teams in the running for pole position.
Charles Leclerc marked Ferrari as favourites following his showing in final practice, though Mercedes had also impressed with Lewis Hamilton.
Similarly, McLaren was on the pace while Max Verstappen had wrestled his Red Bull Racing entry towards the top of the timesheets.
Aston Martin was an outside contender, though its form had disappeared in Free Practice 3 and looked more at risk from RB than a challenger for the front row.
Yuki Tsunoda was ninth fastest as the chequered flag fell earlier in the day, with the Japanese driver among the early pace setters in Qualifying 1.
Team-mate Daniel Ricciardo mustered a 1:14.3s with his first flying lap, a time two seconds slower than he’d gone in Free Practice 3. He improved with a second lap but remained in danger of falling back into the drop zone with only the 13th fastest time.
Meanwhile, Piastri had gone fastest, a 1:11.881s, heading Verstappen by two-tenths at the halfway point of the segment. That advantage was eroded, though the Australian remained on provisional pole as the minutes ticked down – the top five within a tenth of a second.
In the closing four minutes of the segment, the order changed rapidly, only settling at the chequered flag, with two high-profile casualties: Fernando Alonso in 16th and Sergio Perez in 18th.
They were joined on the sidelines by Logan Sargeant and the Sauber duo of Valtteri Bottas and Zhou Guanyu while Piastri and Ricciardo both progressed.
It remained a mixed bag in the early moments of Qualifying 2, with Verstappen fastest from Sainz, with Tsunoda third ahead of Esteban Ocon.
The pace had increased, Verstappen’s initial lap a 1:11.019s versus the 1:11.711s he set in Qualifying 1, before Piastri became the first driver into the 1:10 bracket with just under five minutes remaining put the Australian fastest.
Lando Norris in the other McLaren finally pipped Piastri inside of two minutes to run, the Brit just 0.024s faster while the top three were split by under a tenth. That became four when Verstappen split the two McLarens.
The first car to the flag as the segment ended, Ricciardo, was only good enough for 13th. His 1:11.482 proved two-tenths shy of what was needed—and almost five-tenths away from Tsunoda, who got through in ninth.
Also out of the session were Alex Albon, Ocon, Nico Hulkenberg, Lance Stroll, and Kevin Magnussen.
Qualifying 3 in Monaco is arguably the most important session of the weekend.
With passing so difficult in Sunday’s race, a good starting spot plays a significant part in the outcome of the grand prix.
Leclerc laid an early marker at 1:10.418s, a time all but matched by Piastri.
Verstappen was third fastest, a tenth further back, and then came Sainz a further tenth back following the opening attempts.
Out of sequence with the nine other runners, Albon recorded a 1:10.948s that left him seventh best, and cycling back to pit lane as the field pored out for their final runs.
Hamilton began his flying lap with more than two minutes remaining, while the likes of Sainz ahead of him on the road opted for a spirited second prep lap.
The Mercedes driver improved to fourth, team-mate Russell making that fifth as he went third moments later.
Half a lap behind the pair was Leclerc, who was already on provisional pole but improving, banking a 1:10.270s.
Piastri couldn’t improve as he remained second while Sainz slotted in third and Norris fourth.
Verstappen was unable to improve and abandoned his lap, leaving him sixth ahead of Hamilton, Tsunoda, Albon, and Gasly.