The Argentine needed almost four hours to pick up the victory, battling to a 7-5(5) 5-7 6-3 7-5 victory at Roland Garros to reach the semi-finals for just the second time.
The two big-hitters gave little away on their own serve throughout the opening set, although it was Del Potro who came closest to making the breakthrough with six break points that went begging.
The world number six did take advantage of his first set point in the tie-break, though, taking the opener 7-5 following a 75-minute set.
It wasn't until the ninth game of the second set that the first break arrived, and that sparked a flurry with three games in a row going against serve, Cilic winning two of those to help him to a 7-5 win.
The Croat got off to an ideal start in the third set too with a break in the very first game, but from 3-1 down Del Potro won five successive games to hit back and regain his one-set advantage.
The normal order of neither player giving much away on their serve was restored in the fourth set, at least until Del Potro secured a crucial break to move into a 6-5 lead, allowing him to serve out the match and book his place in the last four.
Del Potro, whose only previous appearance in the semi-finals at Roland Garros came nine years ago, will next take on 10-time and defending champion Rafael Nadal.