Zverev outlasted John Isner 6-4 6-7 6-1 before Djokovic needed less than an hour to beat Dominic Thiem 6-1 6-0.
Zverev, the 20-year-old German, becomes the youngest player to reach a ATP 1000 final since Djokovic, aged 19, in 2007. Sunday's meeting in the Rome final, live on Sky Sports 3 HD from 1pm, is their first career meeting.
Zverev, the world No 17, had already beaten Andy Murray's conqueror Fabio Fognini and then Milos Raonic earlier in the competition and his impressive streak continued in Saturday's semi-final.