Paulo Dybala opened the scoring after eight minutes with Juan Cuadrado marking his comeback from injury with the second and Sami Khedira adding a third late on as Juventus moved four points clear of Napoli whose hopes were hit by a 1-1 draw at strugglers Sassuolo.
Defender Bonucci, 30, left Turin last summer for Milan after falling out with coach Massimiliano Allegri and was jeered by the hostile crowd in the Allianz Statium.
"I'm happy for Bonucci that he got a goal, but I'm even happier that Juventus won," said Allegri.
"It was important to get back to winning ways against Milan, who are in good shape. Wins like this send a signal."
Dybala's opener left a diving Gianluigi Donnarumma without a chance after the Milan keeper had earlier cleared a Gonzalo Higuain snapshot.
Milan pushed forward with Andre Silva heading wide, before Bonucci rose to nod in the equaliser -- the first Serie A goal conceded by Juventus in 2018.
But the champions cranked up the tempo with Khedira setting up substitute Cuadrado whose diving header beat Donnarumma on 79 minutes with the German midfielder finishing off a Dybala cross for the third.
It was Gennaro Gattuso's side's first defeat of 2018 ending a ten-match unbeaten run, and giving Juventus a boost ahead of Tuesday's Champions League quarter-final first leg game against Real Madrid.
"In the end fatigue took over and they had great players and they took advantage of it," said Gattuso.
Juventus have 78 points from 30 games with Napoli on 74.
AC Milan stay sixth -- but drop eight points off the Champions League places.