Vidal strike puts Juventus on brink of title
Milan scored three in the last 20 minutes to stay one point clear of Fiorentina, 3-0 winners at Sampdoria, while the day's action was marred by an injury to Inter Milan captain Javier Zanetti and allegations Juve's Paul Pogba was racially insulted.
Arturo Vidal hooked in from 25 metres and Claudio Marchisio added another in stoppage time for leaders Juventus, who stayed 11 points clear of Napoli with four matches to play and can wrap up the title at home to Palermo next week.
After the game, Torino's Riccardo Meggiorini denied suggestions of racism against French midfielder Pogba.
"There was an insult but it wasn't racist," he said, according to Gazzetta dello Sport.
Giampaolo Pazzini scored twice in three minutes and Mario Balotelli won and converted a penalty, his eighth goal since joining in January, as AC Milan twice came from behind against Catania at the San Siro.
Juan Cuadrado, Adem Ljajic and Alberto Aquilani shared the goals for Fiorentina who were facing former coach Delio Rossi, sacked for punching Ljajic in a row during a game a year ago.
Inter Milan's injury misery continued as Zanetti, 39, was carried off on a stretcher in the 17th minute of the 1-0 defeat at Palermo, who boosted their hopes of avoiding the drop.
Coach Andrea Stramaccioni said the Argentine, who has played more than 800 matches for Inter, could have suffered an Achilles tendon injury, potentially sidelining him for eight months.
AS Roma forward Pablo Osvaldo produced the day's best individual effort with a hat-trick in the 4-0 defeat of next-to-bottom Siena. Erik Lamela scored the other goal for fifth-placed Roma.
Juventus have 80 points from 34 games while Napoli have 69 after their 3-0 win at Pescara on Saturday. Milan have 62 and Fiorentina 61.
Juve, who have not conceded a goal in their last eight meetings with Torino in a run stretching back to 2002, have been a model of consistency, not scoring more than two goals in a game during their current run of wins.
Sunday's game was predictably niggly with slippery conditions adding to the tension which boiled over with a red card for Torino's Kamil Glik in the 90th minute for a second bookable offence.
The match was in danger of petering out until Chile midfielder Vidal controlled a crossfield pass on his chest and nonchalantly swept home the ball from 25 metres. Marchisio then took advantage of slack defending to complete the scoring.
Catania went ahead at the San Siro with a Nicola Legrottaglie header after half an hour and then survived a huge scramble in their area almost immediately afterwards.
Mathieu Flamini levelled on the stroke of half-time, only for Gonzalo Bergessio to stun the crowd again by putting Catania back in front with a cheeky lob in the 65th minute.
Pazzini came to the rescue, snapping up a rebound after Catania goalkeeper