The Spaniard started brightly and raced into a 3-0 lead in the first set, but Del Potro got his serve and forehand weapons working to battle back and claim the opener in 54 minutes.
Both players had chances in a second set full of fierce exchanges but Nadal held his nerve to level the match after showing some vintage form at the baseline.
Nadal went on the offensive early in the third and looked to capitalise as Del Potro looked tired in the decider after a grueling run to the final.
A blistering forehand earned Nadal a crucial break in the third game and the 26-year-old never looked back.
Del Potro kept fighting and saved three match points on serve, but Nadal held firm to seal an emotional victory in just over two hours.