Del Potro found his rhythm on serve more quickly than the Serb. Djokovic struggled to close out his service games in the opening set, being broken by Del Potro in the ninth game of the set, allowing the Argentinian to serve for a one-set lead.
The world number one made a shaky start to the second set, facing three break points in his opening service game before eventually holding on to take the game.
Del Potro had Djokovic in trouble again two games later, coming out of a 33-shot rally on top to take a break.
The Australian Open champion found his form, breaking back in the next game to level the set before going a break up two games later.
Del Potro was unable to respond and Djokovic served out the second set, taking the match into a third set.
It took less than 30 minutes for the resurgent Serb to wrap up the final set, getting an early break to put Del Potro on the back foot.
Djokovic awaits the winner of Andy Murray's match against Roger Federer this evening.