The Serie A champions needed extra time to overcome their rivals, but sealed a comeback victory to advance into the last-four of the competition
The Bianconeri fell behind to Stephan El Shaarawy's early strike, but levelled through Sebastian Giovinco before Mirko Vucinic sent the game in extra time.
The crowd at Juventus Stadium was treated to a frenetic start to the quarter-final clash, as both teams pushed forward in search of an early opener. Massimo Ambrosini was the first man to take aim at goal, his early snapshot pushed over the bar by Marco Storari with barely two minutes on the clock. It was a warning for Juve, and one the home team failed to heed as they fell almost instantly behind.
Kevin-Prince Boateng stretched the home defence with a storming run down the left flank, and did enough to turn in a low cross from the byeline. Giampaolo Pazzini was intelligent enough to let the ball run and it was El Shaarawy who took full advantage, as the Serie A top scorer curled a well-taken effort past the flailing Storari and into the corner of the net.
Milan's attacking prowess could not hide certain deficiencies at the back, though, and Alessandro Matri had a golden chance to level proceedings after connecting with a cross from Sebastian Giovinco, but unmarked, the striker nodded wide.
Fortunately for the hosts, that miss was a minor blip on their way to an equaliser. Francesco Acerbi was the villain for Milan, after giving away possession he compounded his error by felling Matri on the edge of the area. A marvellous free-kick from Giovinco gave Marco Amelia no chance, and with just 12 minutes played Juve were back on level terms at 1-1.
The Rossoneri continued to press in search of the lead, but in truth were rather lucky to enter half-time level both on the scoresheet and in terms of personnel. Giovinco was handed another chance to strike from a dead-ball situation, but this time Amelia was equal to it and pulled off a spectacular save to tip the effort over. The youngster then failed to capitalise on Acerbi's scuffed header that put him clean through against Amelia, firing wide on his left foot.
Phillippe Mexes, meanwhile, pushed his luck by obstructing Storari, having already earned a booking for a vicious challenge, but to Juve's disappointment he was given a final warning.
The game continued in the same open, high-octane fashion after the interval, and Giovinco again had the chance to put his side in the ascendancy. The striker attempted to take advantage of a fortuitous deflection from close range, but he failed to make decent contact and Amelia had little problem in saving down low. At the other end Boateng also troubled the keeper, forcing Storari to get down and stop a decent effort from distance.
As extra-time loomed both teams appeared to lower their tempo, playing more cautiously in anticipation of either an additional 30 minutes, or a decisive strike coming on the counter. Teenage Milan substitute M'Baye Niang briefly raised pulses with a jinking run that was finally ended on the edge of the area by Leonardo Bonucci. In the dying minutes Niang again went close as his header flew wide of the post, but at the final whistle the game remained deadlocked at 1-1.
The match had barely kicked off for the 30 minutes of added time before Juve forced themselves into the lead for the first time. Emanuele Giaccherini did well with a tireless run to spearhead the break, and his deep pass rebounded into the path of Mirko Vucinic, who made no mistake in finishing from close range.
Massimiliano Allegri's side desperately threw themselves forward in search of a way back into the match, but were frustrated in their onslaught by a determined backline and the heroic Storari, as they bid farewell to the Coppa Italia.
The victory books Antonio Conte's team into the semi-finals; where they join Lazio, who entered the last-four thanks to a comprehensive 3-0 victory over Catania.