Milan and Juventus play out a 0-0 at San Siro that leaves the top-four gap untouched

AC Milan and Juventus played out a 0-0 draw at San Siro on Sunday night, the second goalless meeting between the sides this season, and a result that keeps the gap between third and fourth at three points with four matchdays to go. Mike Maignan made five saves, Alexis Saelemaekers rattled the crossbar, Khephren Thuram had a goal disallowed for offside, and the top-four race emerged from the night exactly where it began.
Milan stay third on 67 points, Juventus fourth on 64. Behind them Como and Roma both still have the points to overhaul Luciano Spalletti's side. Above them Inter and Napoli are now playing for the Scudetto. This was a game where neither side could afford to lose and one in which neither side, in the end, looked all that desperate to win.
Maignan keeps it level
The story of the match was the Milan goalkeeper. Maignan made one strong save from Francisco Conceicao early in the second half and another to push a deflected effort wide as Juventus had their best spell of the night between the 50th and 65th minutes. He has been Milan's most reliable performer in 2026 and on a night where the Rossoneri attack failed to find a final ball, his 30-year-old hands kept the season ticking along.
Saelemaekers came closest for the home side, his first-half drive from the edge of the box clipping the bar and bouncing back across goal. Christian Pulisic curled one wide late on, and Rafael Leao’s only real moment came in stoppage time when he spun out of pressure on the touchline and forced Michele Di Gregorio to push a near-post effort behind. None of it was the kind of clear-cut chance a side ten points clear of nothing would convert.
Tudor will take it
For Juventus the draw is, on balance, the better result. Spalletti has steadied the side since taking over from Igor Tudor in October and a point at San Siro is precisely the sort of trip-out result a top-four chasing club has to chase. Khephren Thuram thought he had put Juve ahead in the 36th minute when he slid home a Conceicao cut-back from the right, but a VAR check ruled him offside in the build-up. The semi-automatic technology showed his whole body was beyond the last defender.
Kenan Yildiz produced the best Juventus moment in open play, a clipped pass with the outside of his right foot that nearly released Conceicao behind the Milan back line. Federico Gatti returned at the back after his injury and looked solid alongside Bremer. The defensive shape that lost the Coppa Italia quarterfinal to Atalanta in February was tightened up here.
Run-in: Sassuolo, Atalanta, Genoa, Cagliari
Milan now travel to Sassuolo on May 3 before hosting Atalanta on May 10, then face Genoa away on May 17 and finish at home to Cagliari on May 24. Atalanta is the only fixture in there with realistic top-half pedigree, the other three sit mid-table or lower.
Juventus host Hellas Verona on May 3 before going to Lecce, hosting Fiorentina, and finishing away at Torino on the final day, four straight games against bottom-half sides. The fixtures are kinder to the Old Lady than to Milan, and that is the cushion Spalletti leaves Sunday night with: a three-point gap, a more forgiving run-in, and a defence that has now kept Milan goalless in both meetings this season, the sixth Serie A derby in a row in which the Rossoneri have failed to score against them.














