Del Potro defeated Marinko Matosevic of Australia 6-2, 6-2 to line up a match against Gilles Muller of Luxembourg. Second-seeded Tipsarevic was leading 6-2, 4-2 when Aljaz Bedene retired with a left thigh injury.
It was del Potro's second match since returning from a right wrist injury that sidelined him for more than a month.
"I feel confident with my shots, but I need to improve a little bit," the eighth-ranked Argentine said. "I would love to be in the final, but I need to serve well and find a way to break (Muller's) serve."
Del Potro saved a break point in his opening service game against Matosevic and two more while serving for victory, but was in control throughout the match.
Earlier Friday, Muller advanced after defeating Paolo Lorenzi of Italy 6-3, 6-4. Muller had 10 aces and used one break in each set to reach his second semifinal of the year.
Bedene, playing in his first career quarterfinal, was broken at 2-2. Tipsarevic then dominated as Bedene became hampered by the injury.