Ferrari's Leclerc wins Monaco Grand Prix after early Perez crash
It breaks a chain of defeats on home soil for Leclerc, who takes the top prize in his sixth attempt.
"No words can explain this. It means a lot, it's the race that made me dream of becoming a Formula 1 driver," he said afterward.
Leclerc started from pole position and finished 7.1 seconds ahead of Piastri.
It makes the 26-year-old the first home winner in Monaco since Louis Chiron in 1931 and cuts championship leader Max Verstappen's lead to 31 points.
Last year's winner, Red Bull's Verstappen, started and finished in sixth.
The race was interrupted after just one lap when Serigo Perez was involved in a crash.
The Red Bull driver was hit by Haas' Kevin Magnussen from behind, which sent Checo's car into a spin.
Nico Hulkenberg in the other Haas was a third innocent casualty, but all three drivers appeared unhurt.
Rankings
1 - Charles Leclerc (Ferrari)
2 - Oscar Piastri (McLaren)
3 - Carlos Sainz (Ferrari)
4 - Lando Norris (McLaren)
5 - George Russell (Mercedes)
6 - Max Verstappen (Red Bull)
7 - Lewis Hamilton (Mercedes)
8 - Yuki Tsunoda (RB)
9 - Alex Albon (Williams)
10 - Pierre Gasly (Alpine)