AC Milan vs Cagliari: Season Finale Highlights
Under the lights of Stadio Giuseppe Meazza, the final act of Milan’s Serie A season ended with an unexpected twist. In a match finished 1-2 in favour of Cagliari, the story was less about the scoreline and more about two teams whose seasonal identities were laid bare in 90 minutes.
I. The Big Picture – Season DNA meeting one last stress test
Following this result, the table locks in the contrast between the sides. AC Milan close the campaign 5th on 70 points, with a goal difference of 18 (53 scored, 35 conceded in total). Their overall attacking output has been steady rather than explosive: 1.4 goals per game in total, split between 1.3 at home and 1.5 on their travels. Defensively, the numbers underline a solid but not impermeable block, conceding 0.9 goals per game overall, 1.1 at home and 0.7 away.
Cagliari finish 14th on 43 points, with a goal difference of -13 (40 for, 53 against in total). On their travels they have been fragile: 18 goals scored away, 30 conceded, averaging 0.9 goals for and 1.6 against on their travels. Yet the win in Milan is a fitting encapsulation of a side that, while inconsistent, has been capable of sharp, opportunistic punches.
Both coaches mirrored each other structurally with a 3-5-2. Massimiliano Allegri’s Milan set up with M. Maignan behind a back three of F. Tomori, M. Gabbia and S. Pavlovic, a dense midfield five led by A. Rabiot and A. Jashari in the central lanes, and a mobile front two of S. Gimenez and C. Nkunku. Fabio Pisacane’s Cagliari matched the shape: E. Caprile in goal, J. Pedro, Y. Mina and J. Rodriguez as the defensive trio, G. Zappa and A. Obert as wing-backs around a hard-working central cluster of M. Adopo, A. Deiola and G. Gaetano, with G. Borrelli and S. Esposito leading the line.
II. Tactical Voids – Who was missing, and where the discipline lines were drawn
Cagliari arrived with a notable list of absentees. M. Folorunsho (muscle injury), R. Idrissi (knee injury), S. Kilicsoy (personal reasons), J. Liteta (thigh injury) and L. Pavoletti (knee injury) were all ruled out. That stripped Pisacane of rotation in both the attacking and midfield zones and forced a heavy reliance on Esposito as the creative and transitional fulcrum, and on Borrelli as the reference point up front.
From a disciplinary standpoint, the seasonal numbers had already framed the risk profiles. Heading into this game, Milan’s yellow-card distribution showed a clear late-game spike: 25.00% of their yellows arrived between 76-90 minutes, with another 14.06% from 91-105. Cagliari were similar but even more volatile, with 27.16% of their yellows between 76-90 minutes and 23.46% between 46-60. That statistical pattern foreshadowed a second half in which both midfields would be walking a disciplinary tightrope as legs tired and distances stretched.
Individually, the card leaders underpinned this narrative. For Milan, P. Estupiñán – on the bench here – has collected 5 yellows and 1 red in the league, an aggressive presence whose introduction would always carry both energy and risk. For Cagliari, A. Obert’s 9 yellows and 1 yellow-red this season paint him as the edge defender: proactive, combative, and constantly flirting with the disciplinary line on the flank.
III. Key Matchups – Hunter vs Shield, Engine Room vs Enforcer
The “Hunter vs Shield” duel, on paper, belonged to Rafael Leão against Cagliari’s away defence. Leão, with 9 total league goals and 3 assists, has been Milan’s most consistent scorer, firing 45 total shots with 24 on target. His blend of direct running (56 dribbles attempted, 26 successful) and penalty-box presence (2 penalties scored, none missed) normally stretches back lines that defend deep and narrow.
Cagliari’s away numbers suggested vulnerability: 30 goals conceded on their travels, an average of 1.6 per away match. The raw data made this a clear mismatch – an elite wide attacker against a unit that struggles to keep clean sheets away (only 2 clean sheets on their travels). Yet in this fixture, Leão started on the bench, which shifted the attacking burden onto S. Gimenez and C. Nkunku. Without Leão’s vertical threat from the first whistle, Milan’s front two had to find space more through combination and movement between the lines than through raw isolation duels.
On the other side, Cagliari’s offensive spearhead was S. Esposito, not just as a scorer but as a creator. With 7 total goals and 5 assists in Serie A, 71 key passes and 1003 total passes at 75% accuracy, he has been the architect of their attacks. His 312 total duels, 149 won, and 56 fouls drawn show a player who lives in the thick of the contest, constantly inviting contact and territorial gains.
Milan’s “shield” against this was a hybrid: the Tomori–Gabbia–Pavlovic back three and the double pivot led by Rabiot and Jashari. Tomori’s aggression stepping into midfield, combined with Rabiot’s positional discipline, was meant to suffocate Esposito between the lines. But with Cagliari’s 3-5-2 mirroring Milan’s, Esposito could drag markers out of shape, particularly into the half-spaces around Jashari and Y. Fofana, opening channels for Borrelli and late runs from Gaetano.
In the “Engine Room” duel, G. Gaetano and Esposito together faced Milan’s central axis of Rabiot and Jashari. Milan’s season-long control is reflected in their 15 clean sheets in total and only 0.9 goals conceded per game overall. Cagliari, by contrast, have failed to score in 14 matches in total, split evenly between home and away. On paper, the structure favoured Milan’s control; in practice, Cagliari’s double creator core found just enough pockets to tilt the game.
IV. Statistical Prognosis – xG shadows and defensive solidity
Even without explicit xG values, the season-long metrics sketch the underlying probabilities. Heading into this game, Milan’s attack, at 1.4 goals per match overall and 1.3 at home, combined with Cagliari’s 1.6 goals conceded on their travels, pointed toward a home side expected to generate the better chances. Milan’s 15 clean sheets and just 35 goals conceded in total, against a Cagliari side averaging 1.1 goals for per match, further suggested a defensive platform strong enough to absorb sporadic counter-punches.
Cagliari’s path to victory, statistically, always lay in efficiency rather than volume: convert a limited number of opportunities, lean on Esposito’s set-piece delivery and transitional quality, and hope Milan’s late-game card tendency would fracture their structure. That is precisely the type of script that a 2-1 away win implies – a match where the nominal xG balance may have tilted toward Milan, but Cagliari’s finishing and game management outweighed the home side’s territorial and statistical advantages.
Following this result, the numbers remain clear: Milan’s season is defined by control, defensive solidity and a reliable – if not spectacular – attack. Cagliari’s is defined by volatility, away fragility, but also by a capacity to punch above their statistical weight on the right night. At San Siro, in the final round, that volatility became their greatest weapon.






