Ligue 1 Regular Season - 30

Paris Saint Germain 1 - 2 FT Lyon

Parc des Princes

Match previews and recaps to help you decide which games are worth watching

Futmetrix Verdict
100
FT
Sun, Apr 19
Français
Paris Saint Germain
1-2
Lyon
⚡ Intensity 79
⚖️ Balance 49
🏆 Stakes 100
🎲 Upset 100
Lyon stun PSG with clinical masterclass.

Smash and Grab: Lyon's Clinical Strike Shocks the Parc des Princes

Must-Watch Futmetrix Score: 100/100. A breathtaking display of ruthless efficiency proved that possession means nothing without a killer instinct.

The Early Shock

The Stakes were monumental in this late-season title clash, but the script was torn up almost instantly. Paris Saint-Germain held the ball like a precious heirloom at the Parc des Princes, commanding 77% possession, yet Lyon possessed the sharpest blade. Just six minutes into the contest, the visitors struck. A lightning-fast transition saw A. Moreira slice through the defensive lines, feeding Endrick who ruthlessly silenced the Parisian faithful. The hosts responded by turning the pitch into a complete siege. They camped outside the away penalty box and pinged the ball around 785 times. But pure passing volume means absolutely nothing against organized defiance, and the away side looked thoroughly comfortable absorbing the relentless pressure.

The Missed Lifeline

Any remaining sense of Balance evaporated completely when the visitors struck gold again. Turning provider, Endrick carved out space and set up A. Moreira, doubling the lead after just 18 minutes in a masterclass of counter-attacking brutality. The defining moment of the evening arrived just past the half-hour mark. The hosts won a penalty, offering a desperately needed lifeline to shift the momentum. G. Ramos stepped up to the spot, but Dominik Greif became the hero of the hour, guessing right and parrying the Portuguese striker's effort. That save broke Parisian spirits. The home side threw wave after wave of pressure, launching 23 total shots across the evening, but Greif remained an impenetrable wall between the sticks, cementing a monumental Upset Factor.

The Desperate Finish

The second half developed into a story of pure siege warfare. PSG lived in the final third, racking up 13 corners and forcing the issue until the dying seconds. The Intensity was suffocating, yet the defensive unit protected their box with heroic desperation. The home side finally found the net deep into stoppage time when F. Ruiz picked out K. Kvaratskhelia for a dramatic 90th-minute consolation strike. It was far too little, far too late. The visitors survived the barrage with barely a quarter of the possession, walking away with three massive points and proving that a ruthless counter-attack trumps territorial dominance every single time on the pitch.

Key Questions

Was the penalty miss by Afonso Moreira the turning point?

Actually, it was PSG's G. Ramos who missed the crucial penalty at the 33-minute mark, denied by a brilliant Dominik Greif save.

How did Lyon pull off this shock result?

They executed a perfect counter-attacking gameplan. Despite only 23% possession, they scored twice from just five total shots on target.

What made Afonso Moreira the Man of the Match?

He was ruthlessly efficient, providing the crucial assist for Endrick's opener before scoring the second goal himself just 12 minutes later.

What is the Futmetrix Score?

The Futmetrix Score is our 0-100 verdict on how entertaining a match is. We look at intensity, balance, stakes, and star quality to tell you if it's worth your time.

Match Statistics

Possession
77%
23%
Paris Saint Germain 77%
Lyon 23%
Shots
23
5
Paris Saint Germain 23
Lyon 5
Shots on Target
6
5
Paris Saint Germain 6
Lyon 5
Expected Goals (xG)
2.82
0.70
Paris Saint Germain 2.82
Lyon 0.70
Passes
785
243
Paris Saint Germain 785
Lyon 243
Pass Accuracy
92%
74%
Paris Saint Germain 92%
Lyon 74%
Corners
13
5
Paris Saint Germain 13
Lyon 5
Fouls
10
8
Paris Saint Germain 10
Lyon 8
Yellow Cards
4
1
Paris Saint Germain 4
Lyon 1
Red Cards
0
0
Paris Saint Germain 0
Lyon 0

Match Events

Endrick (A. Moreira) 6'
R. Kluivert 🟨 13'
A. Moreira (Endrick) 18'
29' 🟨 I. Zabarnyi
30' 🟨 L. Beraldo
33' G. Ramos (G. Ramos)
P. Fonseca 🟨 33'
39' 🔄 Vitinha W. Zaire-Emery
HT
59' 🔄 D. Doue K. Kvaratskhelia
59' 🔄 S. Mayulu Lee Kang-In
59' 🔄 G. Ramos O. Dembele
R. Kluivert H. Hateboer 🔄 60'
65' 🟨 Lee Kang-In
68' 🟨 L. Hernandez
72' 🔄 B. Barcola F. Ruiz
Endrick A. Karabec 🔄 79'
O. Mangala T. Tessmann 🔄 79'
K. Merah N. Kamara 🔄 85'
90'+4 K. Kvaratskhelia (F. Ruiz)
90'+5 🟨 F. Ruiz
FT

Player Cards

Our take on every player in this match

Paris Saint Germain

Goalkeepers
Matvey Safonov
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
93
Total Mins
Started
Entry
Defenders
Achraf Hakimi
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
82%
Pass Acc
Ilya Zabarnyi
WALL
WALL
0
Dribbled Past
0
Dribbled Past
3
Tackles
56%
Duel Win %
Willian Pacho
MAGNET
MAGNET
127
Activity
127
Activity
121
Passes
6
Duels
Lucas Hernandez
WALL
WALL
0
Dribbled Past
0
Dribbled Past
2
Tackles
50%
Duel Win %
Midfielders
Senny Mayulu
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
59
Total Mins
59
Entry
Lucas Beraldo
STORMTROOPER
STORMTROOPER
5
Shots
5
Shots
0
Goals
1
On Target
Vitinha
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
39
Total Mins
39
Entry
Forwards
Désiré Doué
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
35%
Pass Acc
Gonçalo Ramos
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
59
Total Mins
59
Entry
Bradley Barcola
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
72
Total Mins
72
Entry
BENCH
Lucas Chevalier
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Marquinhos
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Warren Zaïre-Emery
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
54
Total Mins
Started
Entry
Kang-in Lee
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
25%
Pass Acc
Fabián Ruiz
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
21
Total Mins
Started
Entry
João Neves
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Dro Fernández
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Ousmane Dembélé
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
34
Total Mins
Started
Entry
Khvicha Kvaratskhelia
CLUTCH HERO
CLUTCH HERO
90
Goal Time
90
Goal Time
Goal
Impact
7.3
Rating

Lyon

Goalkeepers
Dominik Greif
PENALTY HERO
PENALTY HERO
1
Pens Saved
1
Pens Saved
4
Saves
8
Rating
Defenders
Ainsley Maitland-Niles
FRIENDLY FIRE
FRIENDLY FIRE
Pen Given
Mistake
Pen Given
Mistake
1
Fouls
7.3
Rating
Clinton Mata
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
93
Total Mins
Started
Entry
Moussa Niakhaté
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
93
Total Mins
Started
Entry
Ruben Kluivert
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
60
Total Mins
60
Entry
Midfielders
Tyler Morton
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
93
Total Mins
Started
Entry
Orel Mangala
LATE SHIFT
LATE SHIFT
11
Late Mins
11
Late Mins
79
Total Mins
79
Entry
Abner Vinícius
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
93
Total Mins
Started
Entry
Khalis Merah
LATE SHIFT
LATE SHIFT
5
Late Mins
5
Late Mins
85
Total Mins
85
Entry
Forwards
Endrick
SNIPER
SNIPER
50%
Conversion
50%
Conversion
1
Goals
2
Shots
Afonso Moreira
SNIPER
SNIPER
50%
Conversion
50%
Conversion
1
Goals
2
Shots
BENCH
Rémy Descamps
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Hans Hateboer
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
33
Total Mins
Started
Entry
Noham Kamara
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
8
Total Mins
Started
Entry
Steeve Kango
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Noah Nartey
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Tanner Tessmann
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
14
Total Mins
Started
Entry
Adam Karabec
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
14
Total Mins
Started
Entry
Rachid Ghezzal
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Roman Yaremchuk
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry

Head to Head

Date Home Score Away Competition Venue
11/09/2025 Lyon 2 - 3 Paris Saint Germain Ligue 1 Parc Olympique Lyonnais
02/23/2025 Lyon 2 - 3 Paris Saint Germain Ligue 1 Groupama Stadium
12/15/2024 Paris Saint Germain 3 - 1 Lyon Ligue 1 Parc des Princes
05/25/2024 Lyon 1 - 2 Paris Saint Germain Coupe de France Decathlon Arena - Stade Pierre-Mauroy
04/21/2024 Paris Saint Germain 4 - 1 Lyon Ligue 1 Parc des Princes
09/03/2023 Lyon 1 - 4 Paris Saint Germain Ligue 1 Groupama Stadium
11/09/2025
Ligue 1 Parc Olympique Lyonnais
02/23/2025
Ligue 1 Groupama Stadium
12/15/2024
Ligue 1 Parc des Princes
05/25/2024
Coupe de France Decathlon Arena - Stade Pierre-Mauroy
04/21/2024
Ligue 1 Parc des Princes
09/03/2023
Ligue 1 Groupama Stadium
Paris Saint Germain Win
Lyon Win
Draw

League Standings

Pos Team P Pts GF GA GD Form
1 Paris Saint Germain 29 66 65 25 +40 WParis Saint Germain 3 - 0 Nantes (22-04-2026)LParis Saint Germain 1 - 2 Lyon (19-04-2026)WParis Saint Germain 3 - 1 Toulouse (03-04-2026)WNice 0 - 4 Paris Saint Germain (21-03-2026)LParis Saint Germain 1 - 3 Monaco (06-03-2026)
2 Lens 29 62 57 29 +28 WLens 3 - 2 Toulouse (17-04-2026)LLille 3 - 0 Lens (04-04-2026)WLens 5 - 1 Angers (20-03-2026)LLorient 2 - 1 Lens (14-03-2026)WLens 3 - 0 Metz (08-03-2026)
3 Lille 30 54 49 34 +15 DLille 0 - 0 Nice (18-04-2026)WToulouse 0 - 4 Lille (12-04-2026)WLille 3 - 0 Lens (04-04-2026)WMarseille 1 - 2 Lille (22-03-2026)WRennes 1 - 2 Lille (15-03-2026)
4 Lyon 30 54 45 30 +15 WParis Saint Germain 1 - 2 Lyon (19-04-2026)WLyon 2 - 0 Lorient (12-04-2026)DAngers 0 - 0 Lyon (05-04-2026)LLyon 1 - 2 Monaco (22-03-2026)DLe Havre 0 - 0 Lyon (15-03-2026)
5 Rennes 30 53 52 41 +11 WStrasbourg 0 - 3 Rennes (19-04-2026)WRennes 2 - 1 Angers (11-04-2026)WStade Brestois 29 3 - 4 Rennes (04-04-2026)DRennes 0 - 0 Metz (22-03-2026)LRennes 1 - 2 Lille (15-03-2026)
6 Marseille 30 52 58 40 +18 LLorient 2 - 0 Marseille (18-04-2026)WMarseille 3 - 1 Metz (10-04-2026)LMonaco 2 - 1 Marseille (05-04-2026)LMarseille 1 - 2 Lille (22-03-2026)WMarseille 1 - 0 Auxerre (13-03-2026)
7 Monaco 30 50 52 45 +7 DMonaco 2 - 2 Auxerre (19-04-2026)LParis FC 4 - 1 Monaco (10-04-2026)WMonaco 2 - 1 Marseille (05-04-2026)WLyon 1 - 2 Monaco (22-03-2026)WMonaco 2 - 0 Stade Brestois 29 (14-03-2026)
8 Strasbourg 29 43 46 37 +9 LStrasbourg 0 - 3 Rennes (19-04-2026)WStrasbourg 3 - 1 Nice (04-04-2026)WNantes 2 - 3 Strasbourg (22-03-2026)DStrasbourg 0 - 0 Paris FC (15-03-2026)DAuxerre 0 - 0 Strasbourg (07-03-2026)
9 Lorient 30 41 40 44 -4 WLorient 2 - 0 Marseille (18-04-2026)LLyon 2 - 0 Lorient (12-04-2026)DLorient 1 - 1 Paris FC (05-04-2026)LToulouse 1 - 0 Lorient (21-03-2026)WLorient 2 - 1 Lens (14-03-2026)
10 Paris FC 30 38 40 46 -6 WMetz 1 - 3 Paris FC (19-04-2026)WParis FC 4 - 1 Monaco (10-04-2026)DLorient 1 - 1 Paris FC (05-04-2026)WParis FC 3 - 2 Le Havre (22-03-2026)DStrasbourg 0 - 0 Paris FC (15-03-2026)
11 Toulouse 30 37 41 42 -1 LLens 3 - 2 Toulouse (17-04-2026)LToulouse 0 - 4 Lille (12-04-2026)LParis Saint Germain 3 - 1 Toulouse (03-04-2026)WToulouse 1 - 0 Lorient (21-03-2026)WMetz 3 - 4 Toulouse (15-03-2026)
12 Stade Brestois 29 29 37 38 44 -6 DNantes 1 - 1 Stade Brestois 29 (19-04-2026)LStade Brestois 29 3 - 4 Rennes (04-04-2026)LAuxerre 3 - 0 Stade Brestois 29 (21-03-2026)LMonaco 2 - 0 Stade Brestois 29 (14-03-2026)WStade Brestois 29 2 - 0 Le Havre (08-03-2026)
13 Angers 30 34 26 40 -14 DAngers 1 - 1 Le Havre (18-04-2026)LRennes 2 - 1 Angers (11-04-2026)DAngers 0 - 0 Lyon (05-04-2026)LLens 5 - 1 Angers (20-03-2026)LAngers 0 - 2 Nice (14-03-2026)
14 Le Havre 30 30 25 38 -13 DAngers 1 - 1 Le Havre (18-04-2026)DNice 1 - 1 Le Havre (12-04-2026)DLe Havre 1 - 1 Auxerre (05-04-2026)LParis FC 3 - 2 Le Havre (22-03-2026)DLe Havre 0 - 0 Lyon (15-03-2026)
15 Nice 30 29 34 56 -22 DLille 0 - 0 Nice (18-04-2026)DNice 1 - 1 Le Havre (12-04-2026)LStrasbourg 3 - 1 Nice (04-04-2026)LNice 0 - 4 Paris Saint Germain (21-03-2026)WAngers 0 - 2 Nice (14-03-2026)
16 Auxerre 30 25 25 39 -14 DMonaco 2 - 2 Auxerre (19-04-2026)DAuxerre 0 - 0 Nantes (11-04-2026)DLe Havre 1 - 1 Auxerre (05-04-2026)WAuxerre 3 - 0 Stade Brestois 29 (21-03-2026)LMarseille 1 - 0 Auxerre (13-03-2026)
17 Nantes 30 20 25 49 -24 LParis Saint Germain 3 - 0 Nantes (22-04-2026)DNantes 1 - 1 Stade Brestois 29 (19-04-2026)DAuxerre 0 - 0 Nantes (11-04-2026)DMetz 0 - 0 Nantes (05-04-2026)LNantes 2 - 3 Strasbourg (22-03-2026)
18 Metz 30 15 27 66 -39 LMetz 1 - 3 Paris FC (19-04-2026)LMarseille 3 - 1 Metz (10-04-2026)DMetz 0 - 0 Nantes (05-04-2026)DRennes 0 - 0 Metz (22-03-2026)LMetz 3 - 4 Toulouse (15-03-2026)