AC Milan vs Atalanta: Tactical Breakdown of a 3-2 Thriller
AC Milan’s 3-5-2 against Atalanta’s 3-4-2-1 produced a tactically complex match where structure and game state pulled the game in opposite directions. Atalanta won 3-2 at San Siro, but the underlying dynamics were far tighter than the scoreline suggests, with Milan generating higher xG (1.94 vs 1.08), more shots (20 vs 9) and more possession (57% vs 43%).
Atalanta’s Strategy
Atalanta’s initial plan hinged on vertical efficiency and exploiting Milan’s wing-backs. In their 3-4-2-1, Davide Zappacosta and Nicola Zalewski pushed high and wide, pinning Alexis Saelemaekers and Davide Bartesaghi deep and forcing Milan’s wide midfielders into full-back roles. With Charles De Ketelaere and Giacomo Raspadori operating between Milan’s midfield and back three, Atalanta repeatedly created 3v2 overloads against Milan’s central midfield of Samuele Ricci, Adrien Rabiot and Ruben Loftus-Cheek.
The early 7th-minute goal from Ederson came from precisely this dynamic: Atalanta progressed quickly, bypassing Milan’s first line and finding their central runners in space. Milan’s back three of Strahinja Pavlovic, Matteo Gabbia and Koni De Winter were dragged laterally, and the midfield screen was too flat to protect the half-spaces. The second goal on 29 minutes, scored by Zappacosta and assisted by Nikola Krstovic, underlined Milan’s wing vulnerability: Atalanta attacked the right channel, with the wing-back arriving in advanced zones that Milan’s shape struggled to track once possession was lost.
Milan’s Possession Play
In possession, Milan’s 3-5-2 was designed to control the ball and build patiently. They succeeded in volume and territory: 541 passes to Atalanta’s 411, with a high 88% pass accuracy (478 accurate) versus Atalanta’s 80% (330 accurate). Ricci acted as the primary distributor from the base, while Rabiot and Loftus-Cheek tried to break lines with forward runs. But in the first half, the spacing ahead of the ball was suboptimal. Santiago Gimenez and Rafael Leao often received with their backs to goal against a compact Atalanta back three, and Milan’s wing-backs were pinned too deep to provide consistent width.
Defensive Structure
Defensively, Milan’s pressing was selective rather than aggressive. With only eight fouls to Atalanta’s 17, they tried to defend more with positioning than with high-intensity disruption. That restraint backfired early: Atalanta could play out and find De Ketelaere and Raspadori between the lines without sustained pressure on the ball. Milan’s Defensive Index on the night was undermined by these early structural issues, even though Mike Maignan faced only five shots on target and made two saves; the quality of Atalanta’s best chances was high relative to their volume.
Second Half Adjustments
Massimiliano Allegri’s in-game adjustments were decisive in shifting the momentum. At half-time, he introduced Christopher Nkunku (IN) for Ruben Loftus-Cheek (OUT) at 46', moving Milan into a more aggressive attacking posture. Nkunku’s presence between the lines gave Milan a true central creator, allowing Ricci to sit deeper and Rabiot to time late runs. This changed the dynamic of Milan’s attacks: instead of forcing direct balls into the forwards, they could now connect through a central playmaker.
Raffaele Palladino responded early in the second half, bringing on Odilon Kossounou (IN) for Giorgio Scalvini (OUT) at 48', a like-for-like defensive change to maintain back-three stability. Yet Atalanta still found a third goal on 51', with Raspadori finishing a move assisted by Ederson. Again, the pattern was quick vertical play into advanced attackers with Milan’s midfield stretched.
From 3-0 down, Milan’s tactical risk increased. On 55', Atalanta replaced Zappacosta (OUT) with Raoul Bellanova (IN), maintaining wing-back energy but slightly altering the profile to a more transition-oriented player. Allegri then executed a triple substitution at 58': Zeno Athekame (IN) for De Winter (OUT), Niclas Fullkrug (IN) for Gimenez (OUT), and Youssouf Fofana (IN) for Leao (OUT). Functionally, Milan morphed into a more direct, physically imposing side: Fullkrug as a reference striker, Nkunku underneath, and Fofana adding ball-carrying and pressing power in midfield. Athekame gave fresh legs and more aggression on the right side of the back line.
Final Phase
Atalanta, protecting the lead, made further changes at 63'. H. Ahanor (IN) entered the pitch, adding defensive depth, and Mario Pasalic (IN) replaced De Ketelaere (OUT), shifting the attacking midfield role towards a more workmanlike, box-arriving profile. The cumulative effect was Atalanta dropping five to ten meters deeper, conceding more of the ball and relying on counter-attacks and game management.
The final phase of the match was almost one-way traffic. Milan’s shot profile reflects this: 20 total shots, 9 on target, with a strong 1.94 xG. Atalanta, by contrast, finished with only 9 shots (5 on target) and 1.08 xG, highlighting how much of their offensive productivity was front-loaded. Milan’s structural shift — more bodies between lines, Fullkrug as a focal point, wing-backs higher, and Fofana driving from midfield — finally broke Atalanta’s compact block.
Pavlovic’s 88' goal, assisted by Ricci, came from sustained pressure and second-phase occupation around the box. Milan’s back three stepped higher, and Pavlovic himself advanced to attack the area, reflecting how Allegri sacrificed some defensive security to overload Atalanta’s penalty area. The late penalty converted by Nkunku at 90' further underlined Milan’s territorial dominance in the closing stages.
Discipline and Game Management
Discipline and game management also shaped the tactical tone. Milan collected four yellow cards: Rafael Leao (34' — Foul), Adrien Rabiot (89' — Argument), Pervis Estupinan (89' — Foul), and Alexis Saelemaekers (90' — Argument). Atalanta received three: Isak Hien (70' — Argument), Raoul Bellanova (90+6' — Foul), and Nikola Krstovic (90+5' — Time wasting). The late Atalanta bookings, especially for time wasting, are consistent with a side defending deep and protecting a narrow lead under pressure.
Statistically, Milan’s overall form within this match was that of a dominant home side chasing the game: more possession, more shots, better pass completion, and a higher xG. Atalanta’s Defensive Index was strong in key moments, with Marco Carnesecchi making 8 saves and their collective structure limiting Milan’s central breakthroughs until the final quarter-hour. Milan’s goals prevented figure of 1.1 suggests Maignan also outperformed xG on the shots he faced, but the early defensive disorganization left him exposed.
In synthesis, Atalanta’s early tactical clarity and ruthless exploitation of Milan’s wing-backs built a decisive 3-0 platform. Milan’s subsequent structural improvements, substitutions and territorial dominance produced a late 2-3 fightback that the underlying numbers support, but the deficit created by the opening half-hour proved too large to overturn within regular time.





