The second-seeded Nalbandian avenged his straight-sets loss to Del Potro at the Madrid Masters last week.
"I was the lucky one today, last week it was him,'' Nalbandian said. "I served almost perfect, and I think that is why I won today.''
Nalbandian, the 2002 champion, will play in his fourth Swiss Indoors final Sunday against top-seeded Roger Federer or 39th-ranked Feliciano Lopez of Spain, who played later.
The 26-year-old Nalbandian dropped his first service game but didn't allow another breakpoint opportunity until serving for the match. He rallied to lead 4-2, breaking Del Potro at love and forcing his 20-year-old opponent to hit a backhand volley into the net.
The ninth-ranked Del Potro, who won four straight titles earlier this year, called for the trainer to bandage the big toe on his right foot in the first set.
Nalbandian won his second set-point chance with a serve that was returned long, causing Del Potro to slam his racket in frustration.
Nalbandian broke in the third game of the second set when Del Potro's running forehand went out. Facing a break point at 5-4 up, Nalbandian used a drop shot with backspin to bring Del Potro to the net, then passed him with a forehand.
Celestini Slams Racist “Idiots”
Nalbandian beats Vliegen at Swiss Indoors
Federer to meet Nalbandian in Swiss final