El líder de la Fórmula Uno, Max Verstappen, de Red Bull, terminó quinto, justo por detrás de su rival más cercano por el título, Lando Norris, que comenzó 15 para McLaren y terminó cuarto con un punto extra por vuelta rápida.
Fernando Alonso fue sexto para Aston Martin, mientras que Williams se benefició del accidente de última hora y Alex Albon terminó séptimo, seguido del debutante argentino Franco Colapinto, octavo.
La ventaja del triple campeón Verstappen sobre Norris, que recortó una diferencia de 15 segundos y pasó al piloto neerlandés en la vuelta 49 gracias a sus neumáticos más frescos, se redujo de 62 puntos a 59.
McLaren tiene ahora 20 puntos de ventaja sobre Red Bull en la clasificación de constructores a falta de siete pruebas.
"Ha sido probablemente la tarde más estresante de mi vida", dijo Piastri, después de aguantar la presión implacable de Leclerc para conseguir la segunda victoria de su carrera.
"Definitivamente pasa a la historia como una de las mejores carreras de mi carrera".
El piloto de Ferrari intentó en vano utilizar el DRS para adelantar a Piastri hasta que se desgastaron sus neumáticos y quedó al alcance de Pérez y Sainz.
El siete veces campeón del mundo Lewis Hamilton fue noveno para Mercedes, tras salir desde el pit lane, y el debutante británico Oliver Bearman sumó el último punto para Haas como sustituto del sancionado Kevin Magnussen.
Bearman ha puntuado para dos equipos diferentes en sus dos carreras, después de debutar con Ferrari en marzo como sustituto de Sainz, enfermo de apendicitis.
Pérez intentó adelantar a Leclerc por el segundo lugar en la penúltima vuelta, pero no lo consiguió, y luego se encontró cuarto cuando Sainz aprovechó la oportunidad para pasarle.
Cuando el español y el mexicano luchaban por el tercer puesto en la segunda curva, los coches chocaron y se fueron contra el muro.
"¿Qué ha pasado ahí?", exclamó Sainz, y Pérez le preguntó lo mismo en un lenguaje más colorido.