Den serbiske storstjärnan förlorade första set mot Roberto Bautista Agut, Spanien, med 4-6 och hade stora problem med nacken.
I andra set, och ledning med 4-2, tappade han fästet med högerfoten, halkade och blev liggande på banan. Han fick också behandling under matchen.
Världsettan var skakad, men lyckades vända till seger efter 6-4, 7-6 (7-0) i de två efterföljande seten.
Efter matchen hade Djokovic svårt att förklara hur han vände till seger.
– Det var en väldigt konstigt match måste jag säga. Jag vet faktiskt inte hur jag lyckades vinna om jag ska vara ärlig. Han var den bättre spelaren och för egen del kändes det inte alls bra på något sätt. Men på något sätt löste jag det ändå, säger 33-åringen från Belgrad.
I finalen väntar kanadensaren Milos Raonic som slog greken Stefanos Tsitsipas med 7-6, 6-3.
ARKIV: Se när Djokovic provar på sumobrottning (5 oktober 2020)