I den 33:e minuten tog Dejan Kulusevski sig in i straffområdet och med en boll snett-inåt-bakåt såg han till att Gianluca Frabotta kunde öka på Juventus ledning.
Och i den 78:e satte han trean själv.
Kulusevski fick bollen på djupet av inbytte Federico Chiesa, och den svenske landslagsspelaren ödslade inte tid med att ta emot bollen utan slog till direkt – och fick in 3–0-målet bakom målvakten Etrit Berisha.
Dessförinnan, i den 16:e minuten, hade Alvaro Morata skickat in en straff till 1–0 och på tilläggstid petade Chiesa in 4–0 i Spals tomma mål efter en mindre soloräd.
Med segern är Juventus vidare i den italienska cupen och i semifinalen väntar Inter, som i tisdags fick 2–1 mot Milan.
Även Atalanta får spela vidare i cupen, och det efter en dramatisk vändning från 1–2 till 3–2 i kvartsfinalen mot Lazio.
Ruslan Malinovskij satte kvitteringen i den 37:e minuten och 20 minuter senare säkrades avancemanget när Aleksej Mirantjuk satte dit 3–2.
Efter Atalantas drömstart i Bergamo – Berat Djimsitis ordnade ledningsmålet redan i den sjunde minuten – var det dock gästerna som tog över. Vedat Muriqi fick dit 1–1-målet och i den 34:e minuten gav Francesco Acerbi Lazio ledningen.
Men det skulle som sagt komma ytterligare en vändning i matchen, en avgörande sådan. AtaIanta är därmed vidare till semifinal, och där väntar vinnaren från mötet Napoli–Spezia.