At a packed Stadio Giuseppe Meazza on Saturday night, Serie A leaders Inter edged Juventus 3–2 in a wild contest that swung repeatedly before Piotr Zieliński’s late strike settled it. In a match refereed by Federico La Penna, Cristian Chivu’s side were made to work hard despite playing over a half against ten men, but ultimately extended their grip on top spot. Inter move to 61 points with their fifth straight league win, while Luciano Spalletti’s Juventus, who twice hit back through their midfield, stay fifth and lose ground in the chase for the Champions League places.
First-half analysis
The opening exchanges were tense rather than frantic, with the first major incident arriving on 9' when Alessandro Bastoni went into the book for a foul, hinting at the edge between the old rivals. Inter struck first on 17', albeit with a huge slice of fortune. A low ball into the box turned into disaster for Juventus as Andrea Cambiaso diverted into his own net, credited as an Inter goal but painfully so for the visiting full-back.
To his immense credit, Cambiaso responded in the best possible way. On 26' he arrived to finish a Juventus move and level the score at 1–1, assisted by Weston McKennie, who picked him out to restore parity and steady Spalletti’s side. The game’s complexion changed dramatically in the 32'–42' window. Pierre Kalulu was booked for a foul on 32', then committed another foul on 42', receiving a second yellow followed immediately by a red card. Juventus were reduced to ten men just before the interval, but despite the numerical disadvantage, they got to half-time at 1–1.
Second half and tactical shifts
Both coaches reacted instantly at the break. Chivu replaced the booked Bastoni with Carlos Augusto at 46', a like-for-like defensive switch that kept Inter’s back three intact but added fresh legs and attacking thrust from the left. Spalletti, forced to reshuffle after Kalulu’s dismissal, withdrew winger Francisco Conceição and introduced defender Emil Holm at 46', clearly aiming to restore defensive balance in a now undermanned back line.
Inter tried to increase the tempo and the disciplinary tone remained sharp. Nicolò Barella was booked for a foul on 53', then taken off a minute later as Chivu introduced Hakan Çalhanoğlu on 54', adding control and shooting threat from deep. Juventus, though a man down, refused to fold. On 61' Spalletti made a double change: Fabio Miretti went off for Teun Koopmeiners in midfield, and striker Jonathan David was sacrificed for defender Jhon Cabal, signalling a pragmatic tilt toward solidity and counter-attacks.
Chivu doubled down on fresh energy in midfield and attack on 66', withdrawing Luka Sučić and Luis Henrique for A. Diouf and young forward Francesco Esposito. That move paid off almost immediately. On 75', Juventus took off Kenan Yıldız for Jérémie Boga, but a minute later Inter struck: at 76' Esposito, just on the pitch, finished after a delivery from Federico Dimarco to put Inter 2–1 ahead.
Spalletti rolled the dice again on 78', removing the unfortunate Cambiaso and sending on striker Loïs Openda, an attacking gamble despite being a man short. Inter’s Çalhanoğlu then picked up a yellow card for a foul on 79', reflecting the increasing tension. Juventus’ resilience surfaced once more on 83' when Manuel Locatelli, assisted again by McKennie, made it 2–2, punishing Inter’s inability to close the game out.
Chivu’s final attacking tweak came on 86' as Marcus Thuram made way for forward Ange Bonny, keeping two strikers on the pitch in search of a winner. In stoppage time drama, Zieliński was booked at 90+1', but moments earlier he had produced the decisive moment. On 90', the Polish midfielder struck Inter’s third, assisted by defender Yann Bisseck, to finally break Juventus’ resistance and seal a 3–2 victory.
Statistical deep dive
The numbers underline how Inter controlled the contest with the ball. Chivu’s side had 60% possession, completing 541 of 599 passes at a slick 90% accuracy. Juventus conceded possession and operated at 40%, with 333 accurate passes from 403 (83%), reflecting a more direct, selective approach, especially after going down to ten men.
Inter’s attacking volume was substantial: 21 total shots with 9 on target, compared to Juventus’ 10 efforts and 8 on target. The hosts’ expected_goals of 2.29 suggests their three-goal haul was broadly in line with the quality of chances created. Juventus, with an expected_goals of 0.92 yet two goals scored, were highly clinical, maximising limited opportunities. Defensively, Inter’s Yann Sommer needed 6 saves, more than Juventus keeper Michele Di Gregorio’s 5, evidence that the visitors remained dangerous despite their numerical inferiority.
Discipline was a major storyline. Inter committed 15 fouls and collected 4 yellow cards, while Juventus made 7 fouls, received 2 yellows and the crucial red for Kalulu. The dismissal tilted the tactical battle but also forced Juventus into a backs-to-the-wall display that nearly earned them a point.
Standings and implications
The result cements Inter’s position at the summit of Serie A. With 61 points, a formidable goal difference of +39 and a record of 20 wins from 25 matches, they remain clear title favourites and maintain their status quo at rank 1, firmly on course for Champions League league-phase qualification. Juventus, stuck on 46 points with a +20 goal difference and sitting fifth, fail to improve their position and risk being dragged into a tight fight for European spots. Their away record now shows five defeats in 13, underlining how costly nights like this in Milan could be in the final reckoning.





