The result means Allegri’s Juventus take a three-point lead over Roma into 2015 with the Giallorossi unable to break down Milan, who lost Pablo Armero to a red card in the 70th minute.
For their part, Milan missed the opportunity to move up to third in the table and will instead start the new year behind at least six other clubs in the Serie A standings.
There was a draw in the day’s other game too as Cesena emerged from the fog of Reggio Emilia with a last-gasp equaliser to snatch a 1-1 draw with Sassuolo.
Simone Zaza put Sassuolo ahead with a controversial late penalty which was seen by only one half of the stadium as the fog thickened in Emilia-Romagna, but it was the other half of the stadium which witnessed Ze Eduardo’s first ever goal in Serie A with practically the last touch of the game.
It denied Eusebio Di Francesco’s men a fifth win of the season and first since 29 November, but still leaves Cesena without a win since the opening day of the season and stuck inside the bottom three.