Cristiano Ronaldo missed a first-half penalty as Juventus were held to a 0-0 draw in the second leg of the Coppa Italia semi-final but grabbed a finals ticket with a 1-1 aggregate score.
Milan had Ante Rebic sent off after a high challenge on Danilo in the 16th minute. The referee initially has a yellow card out but VAR upgraded the card colour and Rebic was sent for the early shower.
The hosts were by far the better side but came up against a well organised Milan defense, who had a few sights of goal themselves.
Ronaldo missed a 15th-minute penalty after the VAR had ruled that Conti had handled the ball in the danger zone. Milan keeper Donnaruma guessed right but he could not reach Ronaldo's strike that ricocheted off the upright before being hacked away.
Juventus was nearly on the board within 90 seconds when Douglas Costa lashed a low shot through traffic but wide of the far post.
Milan had to be careful, and they let Juve have most of the ball. Giacomo Bonaventura led a 48th-minute break that Hakan Calhanoglu couldn’t turn on the frame.
Leonardo Bonucci couldn’t convert from close range when the ball came through a seal of players and was spun wide by the defender in the 59th.
Juve kept coming, Matthijs de Ligt nodding a corner kick wide in the 72nd minute
Juve will meet either Napoli or Inter Milan in the final on Wednesday. Napoli leads 1-0 after the first leg in Milan.
AC Milan last won the cup in 2003, while Juventus claimed its 13th in 2018.