Big-serving Del Potro, who came back from 3-0 down in the third set, will face Andy Murray for a place in the final after the Briton crushed an injury-hampered Fernando Verdasco of Spain 6-1 6-2.
Murray beat Fernando Verdasco, the player who knocked him out of January's Australian Open, in a convincing 6-1 6-2 quarter-final victory in just 75 minutes.
Del Potro takes his place in the last four of a Masters event for the first time with the crowd-pleasing victory. It was also his first win over Nadal at the fifth attempt.
"Maybe it was wonderful for the crowd but it was terrible for me," said Nadal.
"I think I played really bad all the time. That's the truth of this match. Later when I was 3-0 up in the third I played worse.
"I had the match, it was amazing disaster," he added.
In an atmosphere more akin to a South American soccer match, Del Potro, who lost to Nadal in Indian Wells last month, was roared on by hundreds of Argentinian fans who sensed an upset from the moment their man broke in the first set to go 5-4 up.
Having served out to win the opening set, Del Potro broke early in the second but then the 20-year-old from Tandil faced the inevitable fightback from the Spaniard, who played some powerful strokes around the court to win the second.
Nadal looked on course for victory when he broke twice early in the third to go 3-0 up but with the fans chanting his name, Del Potro, looking wild in his sleeveless shirt and headband, found the strength to mount a revival of his own.
The Argentine broke back twice to go to 3-3, levelling the set with a brilliant cross-court drive.
Both players then stuck largely to the baseline, but at 6-5 to Del Potro, Nadal had to serve to save the match and found himself 40-15 down after going to the net and putting the ball out wide to the right.
Nadal saved three match points, with an ace bringing him back to deuce, and then when Del Potro hit the net and then drove long the set was tied at 6-6.
Luck seemed to be with Nadal when at 2-2 in the tie-break his shot hit the top of the net and dropped down for a point, but once again Del Potro, celebrating every point with a fist pump, found another burst of determination and took the next five points to win.
After all the passion and excitement of that match, there was a subdued air on the stadium court when Scotsman Murray took on Verdasco, looking for revenge for his five-set defeat to the Spaniard in the fourth round of the Australian Open.
Murray took advantage of a series of errors from his opponent, who was struggling with a buttock muscle injury, to gain early command and never looked in the slightest danger of losing.
"I had this problem in my gluteals in the second game of the match, and after that, it was tough to keep in the match, to put pressure on him.
"He's one of the best players right now. If you're not 100 percent you have no chances to win against him."
Murray will face Del Potro while Roger Federer takes on Novak Djokovic in the semi-finals on Friday.Reuse content