Alexander Zverev dug deep to come back against Stefanos Tsitsipas and reach the Cincinnati Open final.