Serie A Regular Season - 38

AC Milan 1 - 2 FT Cagliari

Stadio Giuseppe Meazza

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

Futmetrix Verdict
80
FT
Sun, May 24
Italiano
AC Milan
1-2
Cagliari
⚡ Intensity 46
⚖️ Balance 78
🏆 Stakes 78
🎲 Upset 100
Sardinian shockwave stuns the Meazza crowd.

The Meazza Silenced by Sardinian Shockwave

Highly Entertaining Futmetrix Score: 80/100. A stunning upset on the final day saw the underdog visitors flip the script entirely, proving that sheer attacking willpower can dismantle the strongest of hosts.

Early Illusions

AC Milan struck first, suggesting a routine end to their league campaign before their adoring home fans. A. Saelemaekers set the tone with a lightning-fast opener in the 2nd minute, expertly latching onto a precise feed from S. Gimenez to slice through the visitors' lines. However, the Balance of play shifted almost immediately, catching the hosts completely off guard. Instead of crumbling under the early setback, Cagliari dug deep, edged possession at 52%, and began peppering the home goal with intent. A relentless Intensity gripped the Stadio Giuseppe Meazza, ultimately culminating in a brilliant 20th-minute equaliser by G. Borrelli. The visitors confidently turned the pitch into a shooting gallery, leaving the heavily favored home side reeling under unexpected, suffocating pressure as the half wore on.

The Goalkeeper's Stand

As the second half unfolded, the sheer volume of attacks told the undeniable story of an off-the-charts Upset Factor in the making. Cagliari racked up a staggering 24 total shots across the match, forcing a masterclass in goalkeeper resilience just to keep the scoreline respectable. Mike Maignan was an absolute wall for the hosts, single-handedly keeping his disjointed side alive with 9 phenomenal saves that repeatedly denied the Sardinian onslaught. Despite his undeniable heroics between the posts, the relentless away tide finally broke through in the 57th minute. J. Rodriguez capitalised on the ensuing penalty box chaos to complete a magnificent comeback, exposing a shockingly fragile home defense that simply could not clear their lines under the heavy barrage.

Final Day Drama

The 2-1 advantage held remarkably firm through the dying minutes, despite massive late Stakes for the home side as they pushed bodies forward in search of a desperate equaliser. Milan's 16 total shots only yielded three on target, a stark and damning contrast to the visitors' clinical 2.70 xG generated throughout a dominant evening. This dramatic victory cements a historic result, silencing the frustrated Milanese crowd and closing the regular season with genuine shock value. While the hosts’ Champions League status was already mathematically secure, this disjointed final day performance exposes glaring tactical flaws they must urgently address before European nights return to their calendar next season, while the visitors celebrate a legendary triumph.

Key Questions

How did Cagliari pull off this shock result?

They edged possession and battered the hosts with 24 total shots, generating a massive 2.70 xG to overwhelmingly break down their favored opponents.

What made Mike Maignan the Man of the Match?

Despite the defeat, Maignan was phenomenal, making 9 crucial saves against a relentless barrage of 10 shots on target to prevent a rout.

How did AC Milan complete the comeback from behind?

It was actually Cagliari who mounted the comeback. After Saelemaekers scored in the 2nd minute, the visitors responded twice to secure a 2-1 victory.

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
48%
52%
AC Milan 48%
Cagliari 52%
Shots
16
24
AC Milan 16
Cagliari 24
Shots on Target
3
10
AC Milan 3
Cagliari 10
Expected Goals (xG)
1.74
2.70
AC Milan 1.74
Cagliari 2.70
Passes
453
487
AC Milan 453
Cagliari 487
Pass Accuracy
87%
88%
AC Milan 87%
Cagliari 88%
Corners
5
5
AC Milan 5
Cagliari 5
Fouls
8
8
AC Milan 8
Cagliari 8
Yellow Cards
2
1
AC Milan 2
Cagliari 1
Red Cards
0
0
AC Milan 0
Cagliari 0

Match Events

J. Pedro 🟨 2'
2' A. Saelemaekers (S. Gimenez)
G. Borrelli 20'
HT
46' 🔄 S. Gimenez C. Pulisic
57' 🟨 S. Pavlovic
J. Rodriguez 57'
58' 🟨 M. Maignan
61' 🔄 F. Tomori Z. Athekame
61' 🔄 C. Nkunku N. Fullkrug
62' 🔄 A. Jashari L. Modric
J. Rodriguez A. Dossena 🔄 62'
J. Pedro M. Palestra 🔄 63'
68' 🔄 Y. Fofana R. Leao
G. Borrelli P. Mendy 🔄 74'
A. Deiola I. Sulemana 🔄 74'
S. Esposito M. Felici 🔄 90'+5
I. Sulemana 🟨 90'+6
FT

Player Cards

Our take on every player in this match

AC Milan

Goalkeepers
Mike Maignan
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Defenders
Fikayo Tomori
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
61
Total Mins
61
Entry
Matteo Gabbia
SHIELD
SHIELD
3
Blocks
3
Blocks
0
Interceptions
1
Tackles
Strahinja Pavlović
STORMTROOPER
STORMTROOPER
1
Shots
1
Shots
0
Goals
0
On Target
Midfielders
Alexis Saelemaekers
SNIPER
SNIPER
100%
Conversion
100%
Conversion
1
Goals
1
Shots
Youssouf Fofana
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
68
Total Mins
68
Entry
Ardon Jashari
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
62
Total Mins
62
Entry
Adrien Rabiot
ARCHITECT
ARCHITECT
4
Key Passes
4
Key Passes
0
Assists
44%
Pass Acc
Davide Bartesaghi
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Forwards
Santiago Giménez
PROVIDER
PROVIDER
1
Assists
1
Assists
1
Key Passes
6.3
Rating
Christopher Nkunku
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
61
Total Mins
61
Entry
BENCH
Matteo Pittarella
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Lorenzo Torriani
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Zachary Athekame
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
34
Total Mins
Started
Entry
Valeri Ivanov Vladimirov
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Koni De Winter
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
David Odogu
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Pervis Estupiñán
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Christian Pulišić
STORMTROOPER
STORMTROOPER
3
Shots
3
Shots
0
Goals
0
On Target
Luka Modrić
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
33
Total Mins
Started
Entry
Samuele Ricci
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Jacopo Sardo
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Ruben Loftus-Cheek
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Niclas Füllkrug
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
34
Total Mins
Started
Entry
Rafael Leão
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
9%
Pass Acc
Cheveyo Mul-Balentien
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry

Cagliari

Goalkeepers
Elia Caprile
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Defenders
Zé Pedro
STORMTROOPER
STORMTROOPER
2
Shots
2
Shots
0
Goals
0
On Target
Yerry Mina
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Juan Rodríguez
SNIPER
SNIPER
100%
Conversion
100%
Conversion
1
Goals
1
Shots
Midfielders
Gabriele Zappa
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Michel Adopo
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
95
Total Mins
Started
Entry
Gianluca Gaetano
MAGNET
MAGNET
85
Activity
85
Activity
76
Passes
9
Duels
Alessandro Deiola
STORMTROOPER
STORMTROOPER
2
Shots
2
Shots
0
Goals
1
On Target
Adam Obert
ARCHITECT
ARCHITECT
3
Key Passes
3
Key Passes
0
Assists
21%
Pass Acc
Forwards
Gennaro Borrelli
FINISHER
FINISHER
1
Goals
1
Goals
4
Shots
8.3
Rating
Sebastiano Esposito
ARCHITECT
ARCHITECT
4
Key Passes
4
Key Passes
0
Assists
41%
Pass Acc
BENCH
Giuseppe Ciocci
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Alen Sherri
SPECTATOR
SPECTATOR
0
Saves
0
Saves
0
Conceded
0
Minutes
Alberto Dossena
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
33
Total Mins
Started
Entry
Marco Palestra
ARCHITECT
ARCHITECT
2
Key Passes
2
Key Passes
0
Assists
8%
Pass Acc
Othniël Raterink
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Sulemana
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
21
Total Mins
Started
Entry
Alessandro Sabino Russo
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Ivan Sulev
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Luca Mazzitelli
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Paul Mendy
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
21
Total Mins
Started
Entry
Nicola Grandu
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Agustín Albarracín
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Andrea Belotti
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Yael Trepy
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry
Mattia Felici
LATE SHIFT
LATE SHIFT
15
Late Mins
15
Late Mins
0
Total Mins
Started
Entry

Head to Head

Date Home Score Away Competition Venue
01/02/2026 Cagliari 0 - 1 AC Milan Serie A Unipol Domus
01/11/2025 AC Milan 1 - 1 Cagliari Serie A Stadio Giuseppe Meazza
11/09/2024 Cagliari 3 - 3 AC Milan Serie A Unipol Domus
05/11/2024 AC Milan 5 - 1 Cagliari Serie A Stadio Giuseppe Meazza
01/02/2024 AC Milan 4 - 1 Cagliari Coppa Italia Stadio Giuseppe Meazza
09/27/2023 Cagliari 1 - 3 AC Milan Serie A Unipol Domus
03/19/2022 Cagliari 0 - 1 AC Milan Serie A Unipol Domus
08/29/2021 AC Milan 4 - 1 Cagliari Serie A Stadio Giuseppe Meazza
05/16/2021 AC Milan 0 - 0 Cagliari Serie A Stadio Giuseppe Meazza
01/18/2021 Cagliari 0 - 2 AC Milan Serie A Sardegna Arena
01/02/2026
Serie A Unipol Domus
01/11/2025
Serie A Stadio Giuseppe Meazza
11/09/2024
Serie A Unipol Domus
05/11/2024
Serie A Stadio Giuseppe Meazza
01/02/2024
Coppa Italia Stadio Giuseppe Meazza
09/27/2023
Serie A Unipol Domus
03/19/2022
Serie A Unipol Domus
08/29/2021
Serie A Stadio Giuseppe Meazza
05/16/2021
Serie A Stadio Giuseppe Meazza
01/18/2021
Serie A Sardegna Arena
AC Milan Win
Cagliari Win
Draw

League Standings

Pos Team P Pts GF GA GD Form
1 Inter 38 87 89 35 +54 DBologna 3 - 3 Inter (23-05-2026)DInter 1 - 1 Hellas Verona (17-05-2026)WLazio 0 - 3 Inter (09-05-2026)WInter 2 - 0 Parma (03-05-2026)DTorino 2 - 2 Inter (26-04-2026)
2 Napoli 38 76 58 36 +22 WNapoli 1 - 0 Udinese (24-05-2026)WPisa 0 - 3 Napoli (17-05-2026)LNapoli 2 - 3 Bologna (11-05-2026)DComo 0 - 0 Napoli (02-05-2026)WNapoli 4 - 0 Cremonese (24-04-2026)
3 AS Roma 38 73 59 31 +28 WHellas Verona 0 - 2 AS Roma (24-05-2026)WAS Roma 2 - 0 Lazio (17-05-2026)WParma 2 - 3 AS Roma (10-05-2026)WAS Roma 4 - 0 Fiorentina (04-05-2026)WBologna 0 - 2 AS Roma (25-04-2026)
4 Como 38 71 65 29 +36 WCremonese 1 - 4 Como (24-05-2026)WComo 1 - 0 Parma (17-05-2026)WHellas Verona 0 - 1 Como (10-05-2026)DComo 0 - 0 Napoli (02-05-2026)WGenoa 0 - 2 Como (26-04-2026)
5 AC Milan 38 70 53 35 +18 LAC Milan 1 - 2 Cagliari (24-05-2026)WGenoa 1 - 2 AC Milan (17-05-2026)LAC Milan 2 - 3 Atalanta (10-05-2026)LSassuolo 2 - 0 AC Milan (03-05-2026)DAC Milan 0 - 0 Juventus (26-04-2026)
6 Juventus 38 69 61 34 +27 DTorino 2 - 2 Juventus (24-05-2026)LJuventus 0 - 2 Fiorentina (17-05-2026)WLecce 0 - 1 Juventus (09-05-2026)DJuventus 1 - 1 Hellas Verona (03-05-2026)DAC Milan 0 - 0 Juventus (26-04-2026)
7 Atalanta 38 59 51 36 +15 DFiorentina 1 - 1 Atalanta (22-05-2026)LAtalanta 0 - 1 Bologna (17-05-2026)WAC Milan 2 - 3 Atalanta (10-05-2026)DAtalanta 0 - 0 Genoa (02-05-2026)LCagliari 3 - 2 Atalanta (27-04-2026)
8 Bologna 38 56 49 46 +3 DBologna 3 - 3 Inter (23-05-2026)WAtalanta 0 - 1 Bologna (17-05-2026)WNapoli 2 - 3 Bologna (11-05-2026)DBologna 0 - 0 Cagliari (03-05-2026)LBologna 0 - 2 AS Roma (25-04-2026)
9 Lazio 38 54 41 40 +1 WLazio 2 - 1 Pisa (23-05-2026)LAS Roma 2 - 0 Lazio (17-05-2026)LLazio 0 - 3 Inter (09-05-2026)WCremonese 1 - 2 Lazio (04-05-2026)DLazio 3 - 3 Udinese (27-04-2026)
10 Udinese 38 50 45 48 -3 LNapoli 1 - 0 Udinese (24-05-2026)LUdinese 0 - 1 Cremonese (17-05-2026)WCagliari 0 - 2 Udinese (09-05-2026)WUdinese 2 - 0 Torino (02-05-2026)DLazio 3 - 3 Udinese (27-04-2026)
11 Sassuolo 38 49 46 50 -4 LParma 1 - 0 Sassuolo (24-05-2026)LSassuolo 2 - 3 Lecce (17-05-2026)LTorino 2 - 1 Sassuolo (08-05-2026)WSassuolo 2 - 0 AC Milan (03-05-2026)DFiorentina 0 - 0 Sassuolo (26-04-2026)
12 Parma 38 45 28 46 -18 WParma 1 - 0 Sassuolo (24-05-2026)LComo 1 - 0 Parma (17-05-2026)LParma 2 - 3 AS Roma (10-05-2026)LInter 2 - 0 Parma (03-05-2026)WParma 1 - 0 Pisa (25-04-2026)
13 Torino 38 45 44 63 -19 DTorino 2 - 2 Juventus (24-05-2026)LCagliari 2 - 1 Torino (17-05-2026)WTorino 2 - 1 Sassuolo (08-05-2026)LUdinese 2 - 0 Torino (02-05-2026)DTorino 2 - 2 Inter (26-04-2026)
14 Cagliari 38 43 40 53 -13 WAC Milan 1 - 2 Cagliari (24-05-2026)WCagliari 2 - 1 Torino (17-05-2026)LCagliari 0 - 2 Udinese (09-05-2026)DBologna 0 - 0 Cagliari (03-05-2026)WCagliari 3 - 2 Atalanta (27-04-2026)
15 Fiorentina 38 42 41 50 -9 DFiorentina 1 - 1 Atalanta (22-05-2026)WJuventus 0 - 2 Fiorentina (17-05-2026)DFiorentina 0 - 0 Genoa (10-05-2026)LAS Roma 4 - 0 Fiorentina (04-05-2026)DFiorentina 0 - 0 Sassuolo (26-04-2026)
16 Genoa 38 41 41 51 -10 LLecce 1 - 0 Genoa (24-05-2026)LGenoa 1 - 2 AC Milan (17-05-2026)DFiorentina 0 - 0 Genoa (10-05-2026)DAtalanta 0 - 0 Genoa (02-05-2026)LGenoa 0 - 2 Como (26-04-2026)
17 Lecce 38 38 28 50 -22 WLecce 1 - 0 Genoa (24-05-2026)WSassuolo 2 - 3 Lecce (17-05-2026)LLecce 0 - 1 Juventus (09-05-2026)WPisa 1 - 2 Lecce (01-05-2026)DHellas Verona 0 - 0 Lecce (25-04-2026)
18 Cremonese 38 34 32 57 -25 LCremonese 1 - 4 Como (24-05-2026)WUdinese 0 - 1 Cremonese (17-05-2026)WCremonese 3 - 0 Pisa (10-05-2026)LCremonese 1 - 2 Lazio (04-05-2026)LNapoli 4 - 0 Cremonese (24-04-2026)
19 Hellas Verona 38 21 25 61 -36 LHellas Verona 0 - 2 AS Roma (24-05-2026)DInter 1 - 1 Hellas Verona (17-05-2026)LHellas Verona 0 - 1 Como (10-05-2026)DJuventus 1 - 1 Hellas Verona (03-05-2026)DHellas Verona 0 - 0 Lecce (25-04-2026)
20 Pisa 38 18 26 71 -45 LLazio 2 - 1 Pisa (23-05-2026)LPisa 0 - 3 Napoli (17-05-2026)LCremonese 3 - 0 Pisa (10-05-2026)LPisa 1 - 2 Lecce (01-05-2026)LParma 1 - 0 Pisa (25-04-2026)