The Serbian number one seed beat the sixth seed 4-6 6-3 6-2 at the O2 Arena to maintain his unbeaten run in his year's tournament.
But he had looked in trouble when he went a break down in the second set, only to rouse himself and win 11 of the last 14 games to power through.
The 2008 winner of the season-ending event, will now face reigning champion Roger Federer in Monday's final - the first time Djokovic has reached the final since the tournament moved to the O2 Arena three years ago.
In the early stages, Del Potro had to find some special shots just to stay on level terms, notably a forehand creamed down the line to save a break point in the second game.
But the sheer power of the 6ft 6in Del Potro then pushed Djokovic to overhit. Although the Serbian saved a break point in the seventh game, he faced two more a couple of games later and this time Del Potro struck.
The 24-year-old then served out the set to love, and he kept the momentum going at the start of the second set.
Djokovic saved three break points in the opening game but he was under pressure all the time and he had no answer to another monstrous forehand from Del Potro in the third game, the Argentinian raising his fists in the air as he broke to go 2-1 ahead.
The match seemed to be getting away from Djokovic but he roused himself, taking his fourth chance to hit back when Del Potro for once missed a forehand down the line.
And the Argentinian won only one more game in the set as Djokovic levelled up, breaking for the second time at 4-3.
The effort of the first set seemed to have taken a lot out of Del Potro and he looked distinctly weary as he was broken again in the third game of the decider.
In contrast, Djokovic had a spring in his step and the end was swift in coming, the top seed clinching victory in two hours and 12 minutes.