Neymar was one of five players sent off after an injury-time brawl as Marseille beat Paris St-Germain in Ligue 1.
Florian Thauvin scored the only goal as PSG lost their opening two Ligue 1 games for the first time since 1984-85.
But a late brawl saw PSG substitutes Leandro Paredes and Layvin Kurzawa, and Marseille duo Jordan Amavi and Dario Benedetto, sent off.
The referee then watched a VAR replay of a Neymar punch and showed him a straight red card.
As he he left the pitch, the Brazilian told the fourth official he had heard a racist comment.
The game was fractious even before that late brawl. There were 17 cards shown in total, a record for a Ligue 1 game in the 21st century.
It all started when Marseille's Benedetto nudged Paredes in the back, with the PSG midfielder then punching him to the ground before appearing to headbutt Alvaro.
A melee broke out, with Kurzawa and Amavi punching and kicking each other.
Benedetto and Paredes were each shown second yellow cards, with Kurzawa and Amavi shown straight reds.
A VAR review showed Neymar had punched the back of the head of Alvaro, a player he had been in a running battle with all game, and he was shown a straight red card - having earlier been booked.
Alvaro had also been involved in a big first-half flashpoint when he suggested Angel di Maria spat at him.
Di Maria was one of seven PSG players - along with Neymar - to test positive for coronavirus before the season started, although he had since provided a negative test.
What about the game itself?
Under any other circumstances the headlines would have been about a famous win for Andre Villas-Boas' Marseille over PSG in front of about 5,000 fans at the Parc des Princes.
Marseille had last beaten PSG in Le Classique - one of French football's biggest rivalries - in 2011.
PSG - who lost 1-0 to promoted Lens on Thursday - have lost their opening two league games for the first time in 36 years. They finished 13th that season.
The last time they lost their first two games without scoring was 1978.
Including the Champions League final against Bayern Munich only 21 days ago, that is three 1-0 defeats in a row.
Thauvin scored the only goal when he volleyed Dimitri Payet's free-kick in from close range. Di Maria and Benedetto both had goals disallowed for offside.
Line-ups
PSG
16Rico24FlorenziBooked at 13minsSubstituted forDagbaat 84'minutes4Kehrer3Kimpembe14BernatBooked at 52minsSubstituted forKurzawaat 84'minutesBooked at 90mins21HerreraSubstituted forDraxlerat 61'minutes27Gueye6VerrattiSubstituted forParedesat 71'minutesBooked at 90mins19Sarabia11Di MaríaBooked at 74mins10NeymarBooked at 90minsSubstitutes
8Paredes20Kurzawa22Diallo23Draxler25Bakker29Muinga30Bulka31Dagba36Ruiz-AtilMarseille
30Mandanda2H SakaiBooked at 7mins3GonzálezBooked at 50mins15Caleta-Car18AmaviBooked at 90mins21Rongier4Kamara22GueyeBooked at 38minsSubstituted forBenedettoat 58'minutesBooked at 90mins26ThauvinSubstituted forGermainat 77'minutes27LopezBooked at 61minsSubstituted forStrootmanat 68'minutesBooked at 90mins10PayetBooked at 11minsSubstituted forRadonjicat 77'minutesSubstitutes
5Balerdi6Strootman7Radonjic9Benedetto16Pelé23Aké24Khaoui25Nagatomo28GermainLive Text
Match ends, Paris Saint Germain 0, Marseille 1.
90'+10'
Second Half ends, Paris Saint Germain 0, Marseille 1.
90'+9'
Neymar (Paris Saint Germain) is shown the red card for violent conduct.
90'+9'
VAR Decision: Card upgraded Neymar (Paris Saint Germain).
90'+7'
Second yellow card to Leandro Paredes (Paris Saint Germain).
90'+7'
Second yellow card to Darío Benedetto (Marseille).
90'+7'
Layvin Kurzawa (Paris Saint Germain) is shown the red card for violent conduct.
90'+7'
Jordan Amavi (Marseille) is shown the red card for violent conduct.
90'+6'
Leandro Paredes (Paris Saint Germain) wins a free kick in the defensive half.
90'+6'
Foul by Darío Benedetto (Marseille).
90'+3'
Foul by Leandro Paredes (Paris Saint Germain).
90'+3'
Darío Benedetto (Marseille) wins a free kick in the attacking half.
90'+2'
Offside, Paris Saint Germain. Neymar tries a through ball, but Pablo Sarabia is caught offside.
90'+1'
Kevin Strootman (Marseille) is shown the yellow card for a bad foul.
90'+1'
Pablo Sarabia (Paris Saint Germain) wins a free kick in the defensive half.
90'+1'
Foul by Kevin Strootman (Marseille).
89'
Corner, Paris Saint Germain. Conceded by Duje Caleta-Car.
89'
Attempt blocked. Leandro Paredes (Paris Saint Germain) right footed shot from outside the box is blocked.
84'
Substitution, Paris Saint Germain. Colin Dagba replaces Alessandro Florenzi.
84'
Substitution, Paris Saint Germain. Layvin Kurzawa replaces Juan Bernat.