sportnews full logo

AC Milan vs Cagliari: A Season Defined by Contrasts

The final whistle at Stadio Giuseppe Meazza did more than confirm a 2–1 defeat for AC Milan against Cagliari; it crystallised the contrasting seasonal identities of two sides who finished Serie A 2025 on very different planes.

I. The Big Picture – Season DNA and the sting in the finale

Following this result, Milan closed their campaign in 5th place on 70 points, their goal difference of 18 built on 53 goals scored and 35 conceded overall. The numbers tell of a side largely in control across 38 matches, but not always ruthless. At home they played 19 times, winning 9, drawing 5 and losing 5, with 25 goals scored and 21 conceded. On their travels they were sharper: 11 away wins, only 3 defeats, 28 goals scored and just 14 conceded.

Cagliari, by contrast, ended in 14th with 43 points and a goal difference of -13, the product of 40 goals for and 53 against overall. At home they were respectable – 7 wins, 4 draws, 8 defeats, 22 scored and 23 conceded – but away they often walked a tightrope: 4 wins, 6 draws, 9 losses, with 18 goals scored and 30 conceded.

This final-day upset therefore cut against the grain of the season. Milan, a Europa League-bound heavyweight, were undone in their own stadium by a Cagliari side whose defensive record away from home – conceding 1.6 goals per game on their travels – had usually left them exposed.

Both coaches leaned into a mirrored 3-5-2, a choice that turned the match into a pure duel of structures and personalities rather than shapes. Massimiliano Allegri’s Milan and Fabio Pisacane’s Cagliari lined up almost as if reflected in a tactical mirror, and it was Cagliari who used that symmetry to disrupt and then overturn the expected hierarchy.

II. Tactical Voids – Absences and the disciplinary edge

If Milan came into the game close to full strength on paper, Cagliari were patched together. The visitors were missing a cluster of attacking and creative profiles: M. Folorunsho (muscle injury), R. Idrissi (knee injury), S. Kilicsoy (personal reasons), J. Liteta (thigh injury) and L. Pavoletti (knee injury) were all listed as unavailable. For a side that already averaged only 0.9 goals per game away from home, those absences could have forced a deep, reactive posture.

Instead, Pisacane doubled down on competitive edge. Across the season Cagliari showed a pronounced disciplinary spike late in games: 27.16% of their yellow cards arrived between 76–90 minutes, and all of their red cards came in that same 76–90 window, a sign of a team living on the edge when matches became stretched. Milan, too, had a late-game disciplinary surge, with 25.00% of their yellow cards shown between 76–90 minutes and a spread of red cards at 16–30, 46–60 and 91–105. This finale was always likely to tilt towards chaos rather than calm control as legs and tempers tired.

Milan’s season-long penalty record remained pristine: 7 penalties taken, 7 scored, 0 missed. Cagliari were perfect from the spot as well, 2 scored from 2, but with a much lower volume. The game itself did not hinge on spot-kicks, but those numbers underline how both sides usually needed open-play solutions rather than refereeing lifelines.

III. Key Matchups – Hunter vs Shield, Engine Room wars

The “Hunter vs Shield” narrative began before a ball was kicked. Milan’s attack at home averaged 1.3 goals per match, while Cagliari’s away defence conceded 1.6. On paper, Allegri’s front line should have had enough to break them repeatedly.

Yet the starting XI told a different story. Instead of leaning on his season’s leading scorers, Allegri began with S. Gimenez and C. Nkunku up front, leaving Rafael Leão and Christian Pulisic on the bench. Leão had delivered 9 goals and 3 assists in Serie A, with 45 total shots and 24 on target, plus 23 key passes and 26 successful dribbles from 56 attempts. Pulisic added 8 goals and 4 assists, with 41 shots (25 on target) and 38 key passes. Together, they were Milan’s natural “Hunters”, the players who could unpick a low block or punish transition space.

Instead, Milan leaned on structure: a 3-5-2 spine of F. Tomori, M. Gabbia and S. Pavlovic behind a five-man midfield featuring A. Saelemaekers and D. Bartesaghi as wing-backs, with Y. Fofana, A. Jashari and A. Rabiot inside. The idea was clear – dominate territory, compress Cagliari in their half, and let the forwards feed off volume rather than individual brilliance.

Cagliari’s “Shield” was a back three of J. Pedro, Y. Mina and J. Rodriguez, protected by a hard-running band of five. The key figure was A. Obert, nominally listed as a midfielder here but across the season a defensive pillar. He had 68 tackles, 18 successful blocks and 42 interceptions, plus 9 yellow cards and 1 yellow-red, the statistical profile of a defender who lives in the line of fire and accepts the booking as the price of resistance.

Ahead of them, the “Engine Room” duel pitted Milan’s central trio against G. Gaetano, A. Deiola and M. Adopo, with G. Zappa and Obert stretching as wing-backs. For Cagliari, the creative heartbeat was higher up: S. Esposito, deployed as a forward here but the league campaign’s chief creator for the Sardinians. Over 36 appearances he produced 7 goals and 5 assists, with 71 key passes and 1003 total passes at 75% accuracy. He drew 56 fouls and committed 45, a magnet for contact and a constant agitator between the lines.

In this match-up, Esposito became the “Hunter” in transition. Milan’s defensive record overall – 0.9 goals conceded per game, only 0.7 away but 1.1 at home – was built on control and compactness. However, the 3-5-2 can be vulnerable if the wing-backs are pinned high and the central midfield is bypassed quickly. That is exactly the zone where Esposito thrives: between the lines, attacking the half-spaces left by adventurous wing-backs and drawing defenders into uncomfortable, card-risking duels.

IV. Statistical Prognosis – How the numbers frame the upset

From an Expected Goals lens, even without explicit xG figures, the season data sketches a clear pre-game prognosis. Heading into this game, Milan’s overall scoring rate of 1.4 goals per match against Cagliari’s 1.4 goals conceded suggested the hosts should generate the higher xG and more clear chances. Cagliari’s modest attacking output of 1.1 goals per match overall, and only 0.9 on their travels, indicated that their route to victory would be narrow: set pieces, transitions, or capitalising on rare lapses.

Instead, Cagliari turned those narrow margins into a full-blown heist. The 2–1 scoreline against a side that had kept 15 clean sheets overall – 7 at home, 8 away – underlined their ability to maximise efficiency on the day. Milan, who had failed to score only 7 times in 38 matches, again found a way through but could not convert territorial dominance into a multi-goal cushion.

The late-game card profiles of both teams hinted that the final phases would be ragged rather than controlled, and that chaos favoured the underdog. Cagliari’s resilience, despite being stripped of several squad options, and their reliance on the industry of Esposito and the defensive grit of Obert, Mina and company, allowed them to bend but not break.

For Milan, the story of the season remains one of structure, solidity and enough quality to secure Europe. But this finale at San Siro is a reminder that in a mirrored 3-5-2, when the “Hunter” is left too long on the bench and the “Shield” is asked to absorb more than usual, even a statistically superior side can be dragged into a script it did not intend to write.