AC Milan missed a huge opportunity to secure their spot in the top four as they failed to beat an already-safe Cagliari at San Siro.
In what was a scrappy game littered with mistakes and poor execution in the final third, Milan were unable to breakdown a resolute away side who had learned that they have Serie A status for another season just a couple of hours before the game.
The best chances in a laboured performance probably fell to the away side as Leonardo Pavoletti saw a back post header saved well by Gianluigi Donnarumma, who then produced an even better save to deny Diego Godin’s towering header from a corner.
The draw means that Milan know they must beat Atalanta on the final day of the season to guarantee a return to the Champions League, but if Juve better their result then they will be resigned to the Europe League again.
Head coach Stefano Pioli made one change to his starting line-up from the team that beat Torino 7-0 as Alexis Saelemaekers returned from suspension to reclaim the right wing spot from Samu Castillejo. Ante Rebic remained up front with Zlatan Ibrahimovic out for the season.
The first effort of the game came inside four minutes for Milan as Brahim Diaz span his man well and turned towards goal, with Rebic picking up a feed from the Spaniard and dragging his shot narrowly wide of the far post.
Semplici set Cagliari up in what was on paper a 3-4-2-1 formation but very much functioned as a back five, packing the midfield and sitting deep to frustrate while looking for opportunities on the break.
Milan had a half shout for a handball on the 15 minute mark as a pinball on the edge of the box struck a Cagliari man, though it was outside the box so VAR could not intervene.
Cragno was forced into his first major save of the game minutes later as a giveaway from Nandez allowed Calhanoglu to roll the ball into the path of Saelemaekers, whose fizzing shot was tipped over by the Italian at full stretch. From the resulting corner the Belgian winger also skewed a half-volley over from 20 yards.
A battle developed during the first half hour down Milan’s left side with Nandez and Theo Hernandez getting into a few physical duels and the Uruguay international caused some problems.
Calabria was the latest to let fly right on the stroke of 30 minutes as he fired from 25 yards and whistled an effort just wide of the top left upright.
Kjaer went into the book after cleaning out Joao Pedro as he darted down the left, and the resulting free-kick ended with a dangerous near post flick-on eventually being bundled out for a corner.
Calabria produced an excellent intervention moments later to deny Pavoletti a shot from a dangerous area inside the box after Joao Pedro had found space in behind.
The away side were certainly on top in the 15 minutes before the break and Theo Hernandez produced a swift reaction to head over the bar after a dangerous corner was directed towards Pavoletti. On the break, Bennacer took the ball about 70 yards before being hauled back and drawing a yellow card for Marin.
Milan had a big opportunity to take the lead with the last action of the first half as Calhanoglu took a free-kick 20 yards out but with the walls split, the Turkey international drilled it into the crowd of bodies without testing Cragno.
Pioli made a bold change at the interval as Rafael Leao came on in place of Saelemaekers.
The first effort of the second half came from Calhanoglu as the No.10 managed to turn into some space around 20 yards out, but his attempt was a weak rolling shot that Cragno saved easily.
Calabria thumped the next shot towards Cragno’s goal a few minutes later when a corner was cleared to the full-back on the edge of the box, though he skewed it wide and over
The away side came incredibly close to taking the lead nine minutes into the second 45 as Joao Pedro took advantage of a moment of disorganisation to whip in a perfect cross to Pavoletti at the far post who somehow headed straight at Donnarumma from six yards out, seeing his header well saved.
Brahim Diaz had shifted on to the right wing with Leao’s introduction and became someone ineffective, so Pioli made the decision to bring Castillejo off the bench to replace his compatriot.
Just after Godin had risen highest to head wide from a corner, Pioli’s final changes came. Bennacer and Calabria were withdrawn in the 63rd minute, with Souliho Meite and Diogo Dalot the players to come on.
The next big chance again came from a corner on Cagliari’s right, yet this time a strong hand from Donnarumma denied Godin with a world class save.
Castillejo then had a big chance to open the scoring at the other end as the winger arrived on the end of a Rebic cross but could not direct his close range volley between the posts.
Calhanoglu struck the upright with 20 minutes remaining as he nearly caught Cragno out at the near post with a fierce curling shot, and from the corner that came after Rebic headed wide though he appeared to be having his shirt tugged with VAR not intervening.
Milan’s attacking play become more and more laboured as they struggled to break down a Cagliari side who remained determined to sit and defend the point that they would have needed had Benevento won earlier.
The final roll of the dice came with two minutes left as Calhanoglu was withdrawn in place of Mario Mandzukic.
In the five minutes added on Castillejo curled an effort wide of the far post with players in the box to aim at, and he had two further volleys that were massively scuffed over the bar, which would be the Rossoneri’s last chances.