Ligue 1 Regular Season - 28

Angers 0 - 0 FT Lyon

Stade Raymond-Kopa

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

Futmetrix Verdict
18
FT
Sun, Apr 5
Français
Angers
0-0
Lyon
⚡ Intensity 5
⚖️ Balance 0
🏆 Stakes 42
🎲 Upset 48
A lifeless stalemate in western France.

A Frustrating Stalemate at Stade Raymond-Kopa

Skip It Futmetrix Score: 18/100. Our verdict: An uninspiring goalless draw where overwhelming possession failed to translate into meaningful chances, leaving both sets of supporters thoroughly underwhelmed.

The Stifled Ambition

The match commenced at Stade Raymond-Kopa with a familiar script for the visiting side, as Lyon immediately took control of the ball. However, the necessary Intensity was strikingly absent from their attacking movements. While they dictated the early tempo, their passes often shuffled sideways rather than piercing through a deeply entrenched Angers defensive unit. The hosts were more than content to sit back, absorb the persistent pressure, and look for transitional moments that rarely materialized. With Angers goalkeeper Yahia Fofana barely breaking a sweat in the opening exchanges, the match quickly settled into a sluggish rhythm. The visitors' territorial dominance—holding a commanding 68% possession over the course of the match—felt entirely cosmetic without the necessary incision to carve out clear-cut opportunities.

A Midfield Grind

As the second half unfolded, the tactical Balance remained completely static, creating a frustrating spectacle for the neutral observer. Tyler Morton worked tirelessly in the midfield engine room for the visitors, attempting to orchestrate passing sequences and unlock a stubborn defensive shell. Despite his efforts to inject some urgency into the play, the attacking combinations continually faltered at the edge of the penalty area. The underlying statistics painted a grim picture of the attacking quality on display, with both teams struggling to register impactful shots. The hosts managed a meager 0.29 expected goals, while the visitors barely threatened with 0.85 xG themselves. It became a tactical stalemate where neither side possessed the creative spark required to break the deadlock.

Points Shared, Opportunities Missed

In the end, defensive solidity was the only genuine takeaway from this dreary affair. Moussa Niakhaté proved to be a highly reliable anchor for the visitors, expertly neutralizing any rare counter-attacks and ensuring a comfortable clean sheet for his side. Yet, this 0-0 draw carries a distinct Upset Factor given the broader context of the Ligue 1 campaign. Sitting fifth in the table and chasing Europa League qualification, dropping points to a mid-table side represents a significant missed opportunity. The Stakes were undeniably high for their continental ambitions, but the execution simply failed to match the occasion. Both teams walked away with a solitary point, but neither will look back on this afternoon with any real satisfaction.

Key Questions

Why was this match rated so low?

A severe lack of attacking quality and merely three shots on target across both teams resulted in a dreary, uneventful goalless draw.

Did Lyon capitalize on their heavy possession?

Despite controlling 68% of the ball, Lyon generated just 0.85 expected goals and consistently failed to break down a resilient defensive block.

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
32%
68%
Angers 32%
Lyon 68%
Shots
8
11
Angers 8
Lyon 11
Shots on Target
1
2
Angers 1
Lyon 2
Expected Goals (xG)
0.30
0.70
Angers 0.30
Lyon 0.70
Passes
270
602
Angers 270
Lyon 602
Pass Accuracy
77%
87%
Angers 77%
Lyon 87%
Corners
3
7
Angers 3
Lyon 7
Fouls
14
13
Angers 14
Lyon 13
Yellow Cards
3
0
Angers 3
Lyon 0
Red Cards
0
0
Angers 0
Lyon 0

Match Events

HT
46' 🟨 Y. Belkhdim
P. Sulc R. Yaremchuk 🔄 55'
C. Tolisso R. Ghezzal 🔄 64'
68' 🔄 L. Machine P. Peter
A. Maitland-Niles K. Merah 🔄 73'
Endrick A. Karabec 🔄 73'
T. Tessmann S. Kango 🔄 73'
84' 🟨 L. Raolisoa
86' 🔄 L. Raolisoa F. Hanin
89' 🔄 A. Sbai L. Mouton
89' 🔄 Y. Belkhdim P. Capelle
FT

Player Cards

Our take on every player in this match

Angers

Goalkeepers
Hervé Koffi
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
90
Total Mins
Started
Entry
Defenders
Lilian Raolisoa
WALL
WALL
0
Dribbled Past
0
Dribbled Past
4
Tackles
54%
Duel Win %
Marius Louer
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
90
Total Mins
Started
Entry
Ousmane Camara
STORMTROOPER
STORMTROOPER
2
Shots
2
Shots
0
Goals
1
On Target
Jordan Lefort
STORMTROOPER
STORMTROOPER
1
Shots
1
Shots
0
Goals
0
On Target
Jacques Ekomié
PROVOCATEUR
PROVOCATEUR
3
Fouls Won
3
Fouls Won
4
Duels Won
0
Pens Won
Midfielders
Haris Belkebla
PROVOCATEUR
PROVOCATEUR
3
Fouls Won
3
Fouls Won
4
Duels Won
0
Pens Won
Branco van den Boomen
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
40%
Pass Acc
Yassin Belkhdim
NPC
NPC
89
Minutes
89
Minutes
10%
Pass Acc
6.9
Rating
Forwards
Lanroy Machine
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
68
Total Mins
68
Entry
Amine Sbai
NPC
NPC
89
Minutes
89
Minutes
9%
Pass Acc
6.9
Rating
BENCH
Oumar Pona
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Florent Hanin
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
11
Total Mins
Started
Entry
Maël Gernigon
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Louis Mouton
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
8
Total Mins
Started
Entry
Pierrick Capelle
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
8
Total Mins
Started
Entry
Dan Sinaté
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Prosper Peter
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
22
Total Mins
Started
Entry
Goduine Koyalipou
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Djibirin Harouna
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry

Lyon

Goalkeepers
Dominik Greif
PROVOCATEUR
PROVOCATEUR
1
Fouls Won
1
Fouls Won
2
Duels Won
0
Pens Won
Defenders
Ainsley Maitland-Niles
STORMTROOPER
STORMTROOPER
1
Shots
1
Shots
0
Goals
1
On Target
Clinton Mata
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
90
Total Mins
Started
Entry
Moussa Niakhaté
MAGNET
MAGNET
114
Activity
114
Activity
103
Passes
11
Duels
Abner Vinícius
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
90
Total Mins
Started
Entry
Midfielders
Tanner Tessmann
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
73
Total Mins
73
Entry
Tyler Morton
MAGNET
MAGNET
85
Activity
85
Activity
80
Passes
5
Duels
Endrick
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
73
Total Mins
73
Entry
Corentin Tolisso
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
64
Total Mins
64
Entry
Afonso Moreira
PROVOCATEUR
PROVOCATEUR
4
Fouls Won
4
Fouls Won
5
Duels Won
0
Pens Won
Forwards
Pavel Šulc
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
55
Total Mins
55
Entry
BENCH
Rémy Descamps
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Steeve Kango
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
17
Total Mins
Started
Entry
Hans Hateboer
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Khalis Merah
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
17
Total Mins
Started
Entry
Adam Karabec
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
17
Total Mins
Started
Entry
Noah Nartey
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Orel Mangala
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
35
Total Mins
Started
Entry
Rachid Ghezzal
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
26
Total Mins
Started
Entry

Head to Head

Date Home Score Away Competition Venue
09/19/2025 Lyon 1 - 0 Angers Ligue 1 Parc Olympique Lyonnais
05/17/2025 Lyon 2 - 0 Angers Ligue 1 Groupama Stadium
12/07/2024 Angers 0 - 3 Lyon Ligue 1 Stade Raymond Kopa
02/25/2023 Angers 1 - 3 Lyon Ligue 1 Stade Raymond-Kopa
09/03/2022 Lyon 5 - 0 Angers Ligue 1 Groupama Stadium
04/03/2022 Lyon 3 - 2 Angers Ligue 1 Groupama Stadium
09/19/2025
1 - 0
Ligue 1 Parc Olympique Lyonnais
05/17/2025
2 - 0
Ligue 1 Groupama Stadium
12/07/2024
0 - 3
Ligue 1 Stade Raymond Kopa
02/25/2023
1 - 3
Ligue 1 Stade Raymond-Kopa
09/03/2022
5 - 0
Ligue 1 Groupama Stadium
04/03/2022
3 - 2
Ligue 1 Groupama Stadium
Angers Win
Lyon Win
Draw

League Standings

Pos Team P Pts GF GA GD Form
1 Paris Saint Germain 27 63 61 23 +38 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)WLe Havre 0 - 1 Paris Saint Germain (28-02-2026)WParis Saint Germain 3 - 0 Metz (21-02-2026)
2 Lens 28 59 54 27 +27 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)DStrasbourg 1 - 1 Lens (27-02-2026)
3 Lille 28 50 45 34 +11 WLille 3 - 0 Lens (04-04-2026)WMarseille 1 - 2 Lille (22-03-2026)WRennes 1 - 2 Lille (15-03-2026)DLille 1 - 1 Lorient (08-03-2026)WLille 1 - 0 Nantes (01-03-2026)
4 Marseille 28 49 55 37 +18 LMonaco 2 - 1 Marseille (05-04-2026)LMarseille 1 - 2 Lille (22-03-2026)WMarseille 1 - 0 Auxerre (13-03-2026)WToulouse 0 - 1 Marseille (07-03-2026)WMarseille 3 - 2 Lyon (01-03-2026)
5 Monaco 28 49 49 39 +10 WMonaco 2 - 1 Marseille (05-04-2026)WLyon 1 - 2 Monaco (22-03-2026)WMonaco 2 - 0 Stade Brestois 29 (14-03-2026)WParis Saint Germain 1 - 3 Monaco (06-03-2026)WMonaco 2 - 0 Angers (28-02-2026)
6 Lyon 28 48 41 29 +12 DAngers 0 - 0 Lyon (05-04-2026)LLyon 1 - 2 Monaco (22-03-2026)DLe Havre 0 - 0 Lyon (15-03-2026)DLyon 1 - 1 Paris FC (08-03-2026)LMarseille 3 - 2 Lyon (01-03-2026)
7 Rennes 28 47 47 40 +7 WStade Brestois 29 3 - 4 Rennes (04-04-2026)DRennes 0 - 0 Metz (22-03-2026)LRennes 1 - 2 Lille (15-03-2026)WNice 0 - 4 Rennes (08-03-2026)WRennes 1 - 0 Toulouse (28-02-2026)
8 Strasbourg 28 43 46 34 +12 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)DStrasbourg 1 - 1 Lens (27-02-2026)
9 Lorient 28 38 38 42 -4 DLorient 1 - 1 Paris FC (05-04-2026)LToulouse 1 - 0 Lorient (21-03-2026)WLorient 2 - 1 Lens (14-03-2026)DLille 1 - 1 Lorient (08-03-2026)DLorient 2 - 2 Auxerre (01-03-2026)
10 Toulouse 28 37 39 35 +4 LParis Saint Germain 3 - 1 Toulouse (03-04-2026)WToulouse 1 - 0 Lorient (21-03-2026)WMetz 3 - 4 Toulouse (15-03-2026)LToulouse 0 - 1 Marseille (07-03-2026)LRennes 1 - 0 Toulouse (28-02-2026)
11 Stade Brestois 29 28 36 37 43 -6 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)WMetz 0 - 1 Stade Brestois 29 (01-03-2026)
12 Angers 28 33 24 37 -13 DAngers 0 - 0 Lyon (05-04-2026)LLens 5 - 1 Angers (20-03-2026)LAngers 0 - 2 Nice (14-03-2026)WNantes 0 - 1 Angers (07-03-2026)LMonaco 2 - 0 Angers (28-02-2026)
13 Paris FC 28 32 33 44 -11 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)DLyon 1 - 1 Paris FC (08-03-2026)WParis FC 1 - 0 Nice (01-03-2026)
14 Le Havre 28 28 23 36 -13 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)LStade Brestois 29 2 - 0 Le Havre (08-03-2026)LLe Havre 0 - 1 Paris Saint Germain (28-02-2026)
15 Nice 28 27 33 55 -22 LStrasbourg 3 - 1 Nice (04-04-2026)LNice 0 - 4 Paris Saint Germain (21-03-2026)WAngers 0 - 2 Nice (14-03-2026)LNice 0 - 4 Rennes (08-03-2026)LParis FC 1 - 0 Nice (01-03-2026)
16 Auxerre 28 23 23 37 -14 DLe Havre 1 - 1 Auxerre (05-04-2026)WAuxerre 3 - 0 Stade Brestois 29 (21-03-2026)LMarseille 1 - 0 Auxerre (13-03-2026)DAuxerre 0 - 0 Strasbourg (07-03-2026)DLorient 2 - 2 Auxerre (01-03-2026)
17 Nantes 27 18 24 45 -21 DMetz 0 - 0 Nantes (05-04-2026)LNantes 2 - 3 Strasbourg (22-03-2026)LNantes 0 - 1 Angers (07-03-2026)LLille 1 - 0 Nantes (01-03-2026)WNantes 2 - 0 Le Havre (22-02-2026)
18 Metz 28 15 25 60 -35 DMetz 0 - 0 Nantes (05-04-2026)DRennes 0 - 0 Metz (22-03-2026)LMetz 3 - 4 Toulouse (15-03-2026)LLens 3 - 0 Metz (08-03-2026)LMetz 0 - 1 Stade Brestois 29 (01-03-2026)