OGC Nice hosted AS Saint-Étienne on Friday night in a match that could decide where the club plays next season, with kickoff set for 20:45 at the Allianz Riviera and no supporters inside the ground. Nice needed to beat Saint-Étienne to remain in Ligue 1, and the return leg arrived as the first of two total-closure matches handed down after crowd trouble.
That made this more than a playoff. It was the last match of Dante's career, a final night wrapped inside a survival fight that began three days earlier with a 0-0 draw in Saint-Étienne. Nice entered the second leg 16th in Ligue 1 against a side that finished third in Ligue 2, and the gap between the divisions was measured in one result, one evening, one mistake.
The weight of the fixture was already plain before the ball was kicked. Nice had lost 3-1 to RC Lens in the Coupe de France final one week earlier, leaving the club with no room for another setback if it wanted to stay in the top flight. Claude Puel picked Tom Louchet as a starter on the front line, while Saint-Étienne named Larsonneur, Pedro, Le Cardinal, Bernauer, Appiah, Kanté, Gadegbeku, Boakye, Cardona, Stassin and Davitashvili in their starting lineup.
The closed doors told their own story. The Ligue de football professionnel imposed two firm total-closure matches after the unrest that followed Nice's match against Metz, and Friday's game served the first of them. The second will hit Nice's first home match of next season at the Allianz Riviera, whether the club ends up in Ligue 1 or Ligue 2, a punishment that reaches beyond the playoff itself and into the next campaign.
Saint-Étienne had already played the first leg in front of about 40,000 supporters in a full stadium, a sharp contrast with the silence in Nice. That disparity only sharpened the sense that this was one of the most important matches in OGC Nice's history. By the end of the night, Nice would either have preserved their place in Ligue 1 or carried the consequences of this playoff into a season in the second tier.

