The German had got the first break of serve, but the world number 157 took both sets in a tie-break, winning 4-3(2), 4-3(1).
Zverev had the chance to redeem himself in the final match of the evening when he faced Marin Cilic, and won the first set in a tie-break - before losing the second 4-0 as the Croat stepped up his second serve.
The last set went to a tie-break once more, with Zverev taking an early lead on his serve and employing aces to good advantage, taking the breaker with the loss of one point and concluding a 4-3, 0-4, 4-3(1) win.
Nick Kyrgios hits back at Borna Coric on Adria Tour - 'Do you have rocks in your head?'
In the day's opening match, home favourite Borna Coric beat Grigor Dimitrov 4-1, 4-1 in just over half an hour.
'Wow - just look at this touch!' Incredible rally between Grigor Dimitrov and Borna Coric
Dimitrov later withdrew from the tournament, and was replaced by Croatia's Nino Serdarusic, who beat compatriot Pefja Krstin 4-3 (5), 4-3 (1).
World number one and tournament organiser Djokovic started his day by beating Krstin, running out a 4-3(3), 4-1 winner.
Djokovic saved three set points in the first before taking the tie-break in comprehensive fashion.
He followed that up in the evening session with a 4-1, 4-3(1) defeat of Coric, securing his place in Sunday's final.
Andrey Rublev edged Cilic in the last match of the day session, the only one of the afternoon that extended to three sets - coming out on top 4-3 (5), 2-4, 4-1.
Dominic Thiem defends Novak Djokovic: 'He didn't break any law'
Novak Djokovic: Criticism after Adria Tour a witch-hunt