The world number one soaked up some wrist-bending blows from the inspired Argentine before turning the match in his favor to romp home to a 4-6 6-3 6-2 victory at the O2 Arena.
He struggled to live with Del Potro's weight of shot in the opening set and was in trouble when he went a break down in the second but once again he showed the qualities that have made him such a hard player to beat.
Djokovic broke Del Potro's serve twice in the second and third sets and surged to victory in two hours 11 minutes after winning 11 of the last 14 games.
World number seven Del Potro had played down his chances of reaching the final despite beating Federer in their final Group B match on Saturday, saying "three big names and one big guy" had reached the semis.
However, the 2009 U.S. Open champion, back to near his best after some career-disrupting injuries, showed scant regard for reputations as he traded blows with Djokovic in the first set.
Djokovic did have a chance to break the south American's serve in the second game but Del Potro swatted away the danger with hefty blow.
Djokovic looked increasingly uncomfortable as Del Potro turned up the power throughout the set.
He survived a break point in the sixth game after a terrible smash had given his opponent a chance.
Del Potro produced a stunning forehand pass on the run at 4-4 and two wasteful forehands from Djokovic cost him his serve before Del Potro clinched the opener with a love service game.
Djokovic found himself under immediate pressure at the start of the second set.
He wriggled his way out of one crisis, saving three break points, but two games later Del Potro broke serve again when he prevailed in a rally that Djokovic normally thrives on.
Both men traded heavy groundstrokes before an interlude of low slices but Del Potro then exploded a huge forehand down the line which Djokovic could barely get a racket on.
A set and break to the good Del Potro appeared to have Djokovic where he wanted but the world number one proved he was far from a spent force when he broke for the first time in the match in the following game.
The sting suddenly went from Del Potro's game and Djokovic broke his increasingly weary-looking opponent for a 5-3 lead before leveling the match.
Djokovic picked Del Potro apart in the decider, breaking in the third game with cleverly angled forehand, broke again for a 5-2 lead and wrapped up the win with the minimum of fuss.
(Editing by John Mehaffey)