Brazilian striker Robinho put Milan ahead in the first half before Nicolas Spolli equalized in the 57th minute.
Robinho almost added a second goal when his shot appeared to have crossed the line.
Catania's Alejandro Gomez had a shot ruled out for offside. The Argentine had earlier hit the crossbar.
"It was hard to see, but Robinho's was a goal," Milan coach Massimiliano Allegri said. "It's not a question of referees though, everyone talks, but they should stay quiet.
Seeing as others complain, we'll do so too. We never complain but we have to protect ourselves. We never make a fuss, but then they (Juventus) start talking again about referees.
At this point I'll talk about refereeing decisions too."
Defending champion Milan remains top, five points clear of Juventus which hosts Napoli on Sunday.
Milan, held to a midweek goalless draw in the Champions League against Barcelona, plays the second leg on Tuesday.
Elsewhere, Sergio Floccari — on loan from Lazio — came back to haunt his parent club as his double helped Parma to a 3-1 victory. Lazio remains three points above Napoli and Udinese in the race for third place, having played a game more. Parma is eight points above the drop zone.
Catania attacked from the start and Gonzalo Bergessio went close in the fourth minute when he raced into the right side of the penalty area but sent his effort wide of the near post.
The visitors went close again moments later when Sergio Almiron just missed connecting with a teasing cross from Marco Motta.
Milan's first decent opportunity came in the eighth minute when Urby Emanuelson muscled his way into the area but Catania goalkeeper Juan Pablo Carrizo got down well to deflect the Dutchman's effort.
Carrizo again did well in the 17th to deny Zlatan Ibrahimovic from point-blank range after the striker chested down Massimo Ambrosini's clever pass over the defense.
Bergessio went close moments later but his header scraped the top of the crossbar.
Milan took the lead in the 34th as Robinho lashed the ball into the bottom left corner after a deft one-two with Ibrahimovic.
Catania almost leveled immediately but Gomez's curling shot crashed off the crossbar.
Gomez had the ball in the back of the net less than two minutes after the break, but the Catania forward was judged to have been offside.
Catania equalized 10 minutes later when Nicola Legrottaglie headed the ball and Spolli sidefooted it home from close range. It almost went in front shortly afterwards when Almiron's fierce effort just flew over the bar.
Milan went closer to restoring its lead as Robinho rounded Carrizo before slotting the ball towards goal. Giovanni Marchese cleared off the line although the ball appeared to go over.
Ambrosini thought he gave Milan the lead in the 76th but Carrizo pulled off another brilliant save to keep out the Milan captain's header at full stretch.
Carrizo again came to his team's rescue seconds from fulltime to deny Ibrahimovic.
Catania could have snatched all three points in stoppage time as first Mariano Izco and then Francesco Lodi had shots blocked by the Milan defense.
Parma took an early lead when Lazio goalkeeper Federico Marchetti made a great save to deny Sergio Floccari but the ball came out to McDonald Mariga, who curled it into the bottom left corner.
Matters went from bad to worse in the 12th minute when Floccari headed Gabriel Paletta's strike into an empty net after Marchetti came out to punch clear a corner.
Lazio got back into the game eight minutes from the break when Andre Dias passed to Lionel Scaloni. The Argentine defender's 25-yard thunderbolt was deflected in by Parma's Massimo Gobbi.
Floccari sealed the result in the 71st as he snuck in between Lazio defenders Abdoulay Konko and Stefan Radu to slot home Sebastian Giovinco's free kick.
The game was suspended for five minutes about an hour in after some floodlights went out.