The hosts could have scored inside just two minutes, as Nicolas Gonzalez was sent through via Randal Kolo Muani’s header, but fired over from a promising position. They continued to dominate but suffered a sucker blow when Empoli took a shock lead.
Youssef Maleh made some space for himself on the edge of the box, before shooting brilliantly into the bottom corner with his weaker right foot.
It is his first goal for the club, as he showed a contrast in emotion after being sent off in the respective league fixture. The visitors almost scored a second before half-time too, as Devis Vasquez hit a long ball straight to Ismael Konate, who was unlucky to hit the post from a fairly acute angle.
Both goalkeepers were tested early in the second half, as Maleh almost doubled his tally straight away with another fine strike from distance that was parried out by Mattia Perin, before Dusan Vlahovic’s free-kick was stopped by Vasquez.
Junior Sambia’s effort was then tipped over by Perin, a crucial save as Juventus then equalised minutes later.
Khephren Thuram played a neat one-two with Timothy Weah, before beating Vasquez at his near post.
The Old Lady pushed for a winner, with Vlahovic and Kolo Muani both forcing Vásquez into further saves late on, but Empoli dug deep and earned a penalty shootout, even providing a threat on the break themselves.
Vlahovic stepped up first in the shootout and uncharacteristically blazed over, giving Empoli an immediate advantage.
Captain Liam Henderson then struck down the middle to put them ahead, before Kolo Muani levelled proceedings by hitting the ball into the top corner.
Christian Kouame then sent the goalkeeper the wrong way to put Empoli back in front, before Manuel Locatelli levelled again.
Liberato Cacace was next and despite Perin getting a hand to it, scored, before Vásquez saved Kenan Yıldız’s effort.
Empoli knew they had two chances to win it, and Luca Marianucci made no mistake to send them through to the last four.