The Sicilian outfit matched the league leaders in a spirited showing, and claimed a deserved point to open the door for Juventus to close the gap at the Serie A summit
A first-half Robinho strike was cancelled out by an equaliser from Nicolas Spolli as the hosts claimed a deserved point, and denied the Rossoneri a chance to open up a seven point gap at the top of Serie A.
Catania started brightly, and fired an early warning shot after only four minutes of play, when Gonzalo Bergessio fired into the side netting after sprinting clear down the right.
Milan did not take long to hit back after Urby Emanuelson latched onto an Antonio Nocerino pass and broke free of the defence, only to see Juan Carrizo block his finish at the end.
There were flashes of inspiration in attack from both teams, and Zlatan Ibrahimovic saw a shot saved by the legs of Carrizo, before a great cross by Marco Motta was met by a Bergessio header that skimmed the crossbar.
As the half wore on the tempo of the game died down as both sides appeared to be plying slightly within themselves. However, out of nothing, Milan found their way to an opener after a superb piece of play from Ibrahimovic.
A series of crisp passes saw the Swede receive the ball to feet with his back to goal. Showing incredible strength, he held off Nicola Legrottaglie, turned, and slipped in Robinho, who fired home with aplomb from close range.
Catania nearly drew level moments after the restart when a loose ball in the box was attacked with vigour by Alejandro Gomez, who rattled the crossbar with a ferocious effort.
Gomez thought he had equalised again barely a minute into the second half after turning in a flick by Bergessio. The goal was chalked off for offside, however, despite replays suggesting that the Argentine may have done just enough to keep himself onside.
Catania would not be denied a third time though, and deservedly drew level just before the hour mark. Milan failed to deal with a corner, giving Legrottaglie the opportunity he needed to knock down the ball to Spolli, who stroked home.
Robinho came within inches of putting Milan back in front in the 64th minute with a shot that was barely cleared off the goal line. The Brazilian sprinted clear, rounded Carrizo and sidefooted his attempt, but Govanni Marchese covered well and did just enough to prevent the whole of the ball from crossing the line.
The match was end to end at this point, as Sergio Almiron sent a pair of efforts off target. At the other end of the pitch, Carrizo did superbly to grasp a header by Philippe Mexes at full stretch.
With 10 minutes to go, Ibrahimovic again displayed great control to take a cross-field ball in his stride, but he could only poke his finish the wrong side of the post. The Swede went even closer on the stroke of injury time, but his curled effort from just inside the box was tipped over by Carizzo.
The game ended in dramatic fashion, as the Catania shot-stopper once again denied Ibrahimovic, before Mexes saw a goal-bound header thwarted, with Kevin Prince Boateng putting the rebound wide.
With the last shot of the game, the hosts nearly snatched the points, but Mariano Izco’s shot was blocked by Luca Antonini as both sides had to settle for a share of the spoils.
Milan open up a five -point gap at the top of Serie A, but second place Juventus can reduce the deficit with their match against Napoli on Sunday. Catania meanwhile stay in seventh place with 43 points, and remain in the hunt for a European berth.