It means Juventus become the first Italian team to win successive league and Cup doubles, a year after ending a 20-year wait to achieve the feat.
AC Milan's defeat yesterday means the seven-time European champions failed to qualify for Europe next season. Sixth place finishers Sassuolo will be handed a Europa League place.
Milan put everything into a match most expected to be a one-sided in Juve's favour but came away lamenting their failure to convert a host of chances.
But on all-round performance, the champions were barely worthy winners after a comparatively stirring Milan performance given the disastrous season of Cristian Brocchi's men.
More From This Section
Juve midfielder Paul Pogba had claims for a penalty waved away in the early stages when he was upended by Davide Calabria.
But from then on, it was mostly all Milan.
Matteo De Sciglio's drive sailed over and had Juve's second-choice 'keeper Neto screaming at his last line of defence before he then produced a reflex save when Bonaventura's deflected snap shot wrong-footed the 'keeper.
Milan midfielder Juraj Kucka was allowed to power down the middle to set up Keisuke Honda, but Andrea Poli wastefully first-timed the Japanese midfielder's delivery over from 16 yards out.
Milan continued apace after the break, Neto forced down low to stop De Sciglio's low strike in the opening minutes, although a Juve counter had Donnarumma out his net in quick fashion to palm away Mario Lemina's rasping cross away from the feet of Dybala as the Argentine teed up to strike.
Donnarumma from Pogba's cross, and when Lemina found Mandzukic with a great through ball moments later Donnarumma parried the Croatian striker's half-volley on the turn on 74 minutes.
Allegri replaced Lichsteiner with Cuadrado a minute later, and six minutes from the finish M'Baye Niang replaced Poli.
Into extra-time, Juve got another sniff when a tiring Riccardo Montolivo gifted the ball away in midfield and Mandzukic set up Pogba for a piercing strike from distance that Donnarumma did well to parry.
Carlos Bacca then fired a spectacular overhead kick just over and minutes later the hosts had claims for a penalty waved away when Honda came down after clashing with Giorgio Chiellini.
Milan threatened a late leveller when Jose Mauri's low drive from the edge of the area shaved the post, but it was not to be for the struggling Serie A giants.