(AFP PHOTO/OLIVIER MORIN)
Juve's 24th win of the campaign restored their 11-point lead on Napoli, who beat Cagliari 3-2 earlier Sunday, and dented Milan's push for the league's runner-up spot which offers direct qualification to next season's Champions League.
Milan, who remain third but are now seven points behind Napoli, were unbeaten since a 4-2 reverse away to Roma days before Christmas but the Rossoneri lacked bite against a Juve side at full strength and feeling little pressure.
With Mario Balotelli still suspended, Milan coach Massimiliano Allegri opted for Giampaolo Pazzini at the centre of a three-man attack, the striker flanked by Stephan El Shaarawy and Brazilian Robinho.
Juventus, meanwhile, left strikers Fabio Quagliarella and Alessandro Matri on the bench with Mirko Vucinic supported by Claudio Marchisio and Chilean international Vidal.
Robinho created Milan's first opening when he shot wide of Buffon's left upright while El Shaarawy shot straight at the keeper despite a four on three attack led by Kevin-Prince Boateng.
Juve came close to breaking the deadlock inside 10 minutes but Christian Abbiati performed heroics to parry Andrea Pirlo's freekick after it deflected off captain Massimo Ambrosini and sent the keeper the wrong way.
Abbiati, who had required medical assistance following that effort, signalled to the bench on the quarter hour and was replaced by Marco Amelia.
Milan were struggling against Juve's five-man midfield, and doing little when gifted opportunities.
A poor Juve clearance allowed Ambrosini a shot on goal but his effort was well wide while Robinho's knock-on from Ignazio Abate's angled cross hit the side-netting.
At the other end, Vucinic narrowly failed to connect with Stephan Lichtsteiner's probing ball, while Amelia then did well to block Claudio Marchisio's angled shot from 10 metres out.
Milan replaced Ambrosini with Sulley Muntari at half-time but the change failed to to improve Milan's prospects.
Defender Giorgio Chiellini rose to send a header from a corner over Amelia's crossbar, while Marchisio forced the 'keeper down low to save with a low drive.
Boateng saw a speculative effort sail over while French defender Phillipe Mexes shot straight at Buffon while in a rare scoring position.
Defender Cristian Zapata kept his composure to bundle Vucinic off the ball after a superb through ball by Vidal on 54 minutes.
Juve's chance to break the deadlock came minutes later when Amelia fouled Kwadwo Asamoah in the box, with Vidal stepping up to smash the penalty into the top corner.
The goal injected some urgency into what had been a fairly tepid performance from both sides, but after victories for second-placed Napoli and Fiorentina, in fourth, earlier in the day the pressure was all on Milan.
The visitors, however, failed to find the openings and it was Juventus who came closest again, Pirlo finding space to send the ball over the Milan crossbar while Frenchman Paul Pogba glanced a header wide from a corner.
Only a timely block from Mexes on 67 minutes prevented Vucinic from teeing up after Pogba's delivery into the area.
Allegri replaced Robinho with Bojan shortly after, but with Juventus defending in numbers the Rossoneri ultimately ran out of ideas.
What the stars mean:
★ Poor ★ ★ Promising ★★★ Good ★★★★ Very good ★★★★★ Exceptional