Holders Juventus were bundled out of the Coppa Italia after suffering a 3-0 quarter-final defeat to Atalanta.
Colombian striker Zapata claimed his second in the 86th minute his 17th goal in his last 10 games to set up a semi-final against Fiorentina.
Juve have won four Coppa Italia titles under manager Massimiliano Allegri.
Atalanta took the lead through Castagne goal as he coolly slotted a shot into the bottom corner.
Just two minutes later, Zapata punished Juve for failing to clear the ball as it pinged around the box, rifling a shot past goalkeeper Wojciech Szczesny.
The Serie A leaders, who are unbeaten in the league, had chances in the second half and came close with a Sami Khedira volley but he was denied by a good save from Etrit Berisha.
Zapata then pounced on a poor Mattia de Sciglio back-pass for the third goal in the closing stages.
Fiorentina beat Roma 7-1 in their quarter-final as Federico Chiesa scored a hat-trick and AS striker Edin Dzeko was sent off for arguing with the referee.