AC Milan were held to a 0-0 draw by lowly Carpi in what was an anti-climactic first home game in charge for coach Cristian Brocchi.
Brocchi's men missed the chance to close the gap on fifth-placed Fiorentina to four points in Serie A with four games remaining and will feel aggrieved not to have been awarded a late penalty for handball as Emanuele Suagher's block went unnoticed.
Carpi played their part in what was a scrappy game, getting numbers behind the ball at all times with an organised structure.
However, their position remains precarious as they sit just two points ahead of Frosinone in the final relegation spot.
Former Inter goalkeeper Vid Belec was tested inside six minutes when Kevin-Prince Boateng, in for the absent Keisuke Honda, was allowed to turn and fire goalwards.
There was another moment of panic for the visitors when Giacomo Bonaventura lashed a shot that was deflected wide by team-mate Carlos Bacca.
Bacca was involved again moments later when he powered over from outside the box after nice link-up play.
Carpi were pinned back into their own half for most of the first 45 minutes, but they were far from easy to break down, dealing well with the quick football Brocchi's men were trying to play.
Alex headed a corner narrowly over from an unmarked position that the Brazilian would have hoped for better from two minutes before the interval.
Mario Balotelli was booked in the last action of the half when he attempted to convert a byline cross at the near post but only succeeded in taking out Belec with both legs.
Carpi had a half chance at the start of the second period when Marco Crimi got in behind, but his shot from a narrow angle was wide of the mark.
Milan had a goal ruled out for offside 20 minutes from time when substitute Jose Mauri was adjudged to have strayed before bundling in from close range.
Mauri was again involved when he glanced an Ignazio Abate cross just wide of Belec's near post.
Then came the huge penalty shout for the hosts as Andrea Poli had his cross blocked by the trailing arm of Suagher.
Alex had a late shot from close range well saved after Luca Antonelli's soft header was parried, and it was to prove to be a night of frustration for the San Siro crowd.
Carpi could have snatched all three points in the dying seconds when Crimi cut inside and sent an effort towards the top corner, though Gianluigi Donnarumma responded well and tipped over.
Key Opta stats:
- Milan have failed to win their last three Serie A home games (D2, L1).
- Carpi have not scored in five of their last six away Serie A games (W1, D3, L2).
- Kevin Lasagna has played 25 games as substitute, record in this season's Serie A.