Central defender Medhi Benatia struck twice for Juventus and Douglas Costa was also on target on an unhappy evening for Milan goalkeeper Gianluigi Donnarumma who was at fault for the second and third goals.
An own goal by substitute Nikola Kalinic completed a calamitous defensive display by Milan which was likely to have left coach Gennaro Gattuso seething.
Juventus defender Medhi Benatia celebrates with Juventus' forward from Argentina Paulo Dybala (top) after scoring during the Italian Tim Cup (Coppa Italia) final Juventus vs AC Milan at the Olympic stadium on May 9, 2018 in Rome.
Juventus are almost certain to add this year's Serie A title to their trophy cabinet and complete a fourth successive double.
The Turin side are six points clear of Napoli with two games to play and their goal difference is better by 16.
"The lads played an extraordinary game and deserved this win, taking nothing away from Milan who had a good first half," Juve coach Massimiliano Allegri said.
His counterpart Gennaro Gattuso, who had been hoping to lead Milan to their first title since 2011, said his team had played better until the first goal.
"That's football," he said. "Juventus barely troubled us for the first 56 minutes apart from a (Mario) Mandzukic header. But we paid for our mistakes.
"I feel bad that we brought 35,000 people here to watch us lose like this."
After an even first half with few clear chances, the game changed completely in the second half and was effectively settled in a 10-minute spell.
Donnarumma got down low to his right to make a superb save from Paulo Dybala's rasping drive but that was as good as it got for the 19-year-old.
From the resulting corner, Benatia got away from his marker and stooped to head Juve in front after 56 minutes.
Juventus' players celebrate after winning the Italian Tim Cup (Coppa Italia) final Juventus vs AC Milan at the Olympic stadium on May 9, 2018 in Rome.
Image credit: Getty Images
Five minutes later, Donnarumma allowed a low shot from Costa to slip through his hands and into the net and the hapless goalkeeper then failed to hold a header, allowing Benatia to snap up the rebound.
Milan, who like Juventus had not conceded a goal on the way to the final, brought on striker Kalinic but the Croat scored at the wrong end, heading in a corner at the near post under no real pressure in the 76th minute.