An unconvincing Novak Djokovic laboured his way into yet another Shanghai Masters semi-final after qualifier Mischa Zverev threatened to claim the scalp of the world number one.
Djokovic looked flat and appeared short of motivation as he lost the first set to the 110-ranked Zverev, but the defending champion dug himself out of a hole to win 3-6 7-6 (7-4) 6-3 on Friday.
The top seed racked up 37 unforced errors in a largely lacklustre display at a tournament which he has won in three of the last four years, yet still managed to get the job done and set up a last-four meeting with Roberto Bautista Agut.
Djokovic made hard work of claiming his 30th ATP World Tour Masters 1000 triumph of the year, with surprise package Zverev reaping the rewards for showing positivity at the net as he took the first set in 40 minutes.
Zverev was on a roll, taking a 2-0 lead in the second as the out-of-sorts Serb failed to raise his game and looked set to be punished.
Djokovic, who beat the German outsider in their only previous meeting in 2009, hit back and was a break up at 4-3 but ultimately needed a tie-break to level the match.
Zverev, set to return to the top 100 next week, was unable to respond in the decider, with the 12-time grand-slam champion racing into a 3-0 lead and going on to reaching a seventh semi-final in Shanghai in as many attempts.