Elsewhere, third-placed Lazio crashed to a 3-1 defeat at lowly Parma.
Milan appeared to be on course for a fifth consecutive league win when Brazilian Robinho put them ahead in the 34th minute after a clever one-two with Zlatan Ibrahimovic.
Nicolas Spolli, one of seven Argentines in the Catania starting line-up, then levelled for the Sicilians just before the hour.
The visitors said later they should have been awarded a goal in the 71st minute when Robinho had a shot cleared off the line by Giovanni Marchese with goalkeeper Juan Pablo Carrizo beaten.
It was impossible to tell from television replays whether the ball went over the line and Milan players did not protest at the time but Milan coach Massimiliano Allegri was adamant.
"Robinho's goal was valid," said Allegri who usually avoids controversy.
"This year we have been involved in four evenly-balanced games where decisions have gone against us," he added in a television interview.
The most controversial came in the key 1-1 draw with Juventus when, with Milan leading 1-0, a Sulley Muntari header clearly crossed the line but officials failed to spot it.
Sergio Floccari struck in the 12th and 72nd minutes as Parma defeated Lazio to move up to 13th place.
Kenya striker McDonald Mariga was also on target for Parma while Lionel Scaloni replied for the visitors.
Lazio have 51 points, three more than Napoli and Udinese.
Milan's visit to seventh-placed Catania looked a tricky assignment, three days after a 0-0 draw in their Champions League quarter-final first leg against Barcelona.
Both sides went close in a lively opening before Robinho swapped passes with Ibrahimovic and clinically beat Carrizo.
It was harsh on Catania who almost grabbed an immediate equaliser when Alejandro Gomez's dipping shot rattled the bar.
Catania dominated after the restart as Gomez had a goal disallowed and Pablo Barrientos saw a shot cleared off the line by defender Luca Antonini.
The equaliser finally came in the 57th minute when Nicola Legrottaglie headed on a corner for Spolli to beat Christian Abbiati from point-blank range.
There was plenty more drama to come as Milan pushed for a late winner.
Following the Robinho controversy, Carrizo made a superb stop from Philippe Mexes's header.
Ibrahimovic had four chances late in the game, first shooting across the face of the goal from a good position, then seeing a nonchalant chip tipped over by Carrizo.
The keeper foiled the Swede again by diving at his feet to block a shot and Ibrahimovic had another goal-bound effort denied by Marco Motta.
Catania went down the other end and Julio Izco's goal-bound effort was blocked by Antonini with the last kick of the game.
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Try your first month for just £1 / $1 / €1