Neymar was one of five players sent off after an injury-time brawl as Marseille beat Paris St-Germain in Ligue 1.
As he left the pitch, the Brazilian told the fourth official he had heard a racist comment.
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 along with Neymar.
The referee watched a VAR replay of a punch from Neymar before showing him a straight red card.
After the match Neymar tweeted that his “only regret” was not hitting Alvaro Gonzalez in the face, having struck him on the back of the head.
In the post-match press conference Marseille manager Andre Villas-Boas said: “There is no place for racism in football but I don’t think that was the case… we’ll have to look at it.”
The game – which was watched by a crowd of about 5,000 fans at the Parc des Princes – 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.
The injury-time drama 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.
The VAR review showed Neymar had punched the back of the head of Alvaro, a player he had been in a running battle with, 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 Villas-Boas’ Marseille over PSG.
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.
- 24FlorenziBooked at 13minsSubstituted forDagbaat 84′minutes
- 14BernatBooked at 52minsSubstituted forKurzawaat 84′minutesBooked at 90mins
- 21HerreraSubstituted forDraxlerat 61′minutes
- 6VerrattiSubstituted forParedesat 71′minutesBooked at 90mins
- 11Di MaríaBooked at 74mins
- 10NeymarBooked at 90mins
- 2H SakaiBooked at 7mins
- 3GonzálezBooked at 50mins
- 18AmaviBooked at 90mins
- 22GueyeBooked at 38minsSubstituted forBenedettoat 58′minutesBooked at 90mins
- 26ThauvinSubstituted forGermainat 77′minutes
- 27LopezBooked at 61minsSubstituted forStrootmanat 68′minutesBooked at 90mins
- 10PayetBooked at 11minsSubstituted forRadonjicat 77′minutes
Match ends, Paris Saint Germain 0, Marseille 1.
Second Half ends, Paris Saint Germain 0, Marseille 1.
Neymar (Paris Saint Germain) is shown the red card for violent conduct.
VAR Decision: Card upgraded Neymar (Paris Saint Germain).
Second yellow card to Darío Benedetto (Marseille).
Second yellow card to Leandro Paredes (Paris Saint Germain).
Jordan Amavi (Marseille) is shown the red card for violent conduct.
Layvin Kurzawa (Paris Saint Germain) is shown the red card for violent conduct.
Leandro Paredes (Paris Saint Germain) wins a free kick in the defensive half.
Foul by Darío Benedetto (Marseille).
Foul by Leandro Paredes (Paris Saint Germain).
Darío Benedetto (Marseille) wins a free kick in the attacking half.
Offside, Paris Saint Germain. Neymar tries a through ball, but Pablo Sarabia is caught offside.
Kevin Strootman (Marseille) is shown the yellow card for a bad foul.
Pablo Sarabia (Paris Saint Germain) wins a free kick in the defensive half.
Foul by Kevin Strootman (Marseille).
Corner, Paris Saint Germain. Conceded by Duje Caleta-Car.
Attempt blocked. Leandro Paredes (Paris Saint Germain) right footed shot from outside the box is blocked.
Substitution, Paris Saint Germain. Colin Dagba replaces Alessandro Florenzi.
Substitution, Paris Saint Germain. Layvin Kurzawa replaces Juan Bernat.