Home favourite Alexander Zverev missed out on his first Hamburg Open final as defending champion Nikoloz Basilashvili fought back from facing two match points to edge an epic semi-final.
Georgian fourth seed Basilashvili recovered to win 6-4 4-6 7-6 (7-5) in three hours and seven minutes.
Basilashvili, 27, will face Russian Andrey Rublev, who beat Spain's Pablo Carreno Busta, in Sunday's final.
Hamburg-born Zverev led 5-3 in the decider but could not take his chances.
World number five Zverev, whose split with coach Ivan Lendl was announced by the eight-time Grand Slam winner before Friday's quarter-final win against Serbia's Filip Krajinovic, was aiming to reach his third final in 2019.
Instead it is Basilashvili who will take on 21-year-old Rublev for the clay-court title.
Rublev, who caused an upset against Austrian top seed Dominic Thiem in the last eight, trailed by a set and a break before winning 11 of the final 13 games to seal a 4-6 7-5 6-1 victory over Carreno Busta.