Novak Djokovic had to battle back more than once before eventually getting the better of Stefanos Tsitsipas in Rome, keeping alive his hopes of a sixth Internazionali BNL d'Italia title.
The reigning champion was in trouble when play was halted in the quarter-final clash on Friday, trailing by a set and a break before persistent rain forced an early end to proceedings.
However, Djokovic was able to get back on level terms before the duo played out a see-saw deciding set that twice saw Tsitsipas hold control.
The sixth seed – seeking a first win over the world number one on clay at the third attempt – even had the chance to serve out for the match when 5-4 ahead, only to falter with the finishing line in sight.
Djokovic instead claimed three games in a row to finally prevail after three hours and 16 minutes on court. He has little time to recover, though, as his semi-final match is scheduled for later on Saturday.
Next up will be Italian Lorenzo Sonego, the home favourite having produced a comeback of his own to see off Andrey Rublev 3-6 6-4 6-3 in another contest held over from Friday.
Djokovic will hope for a more straightforward encounter after being pushed all the way by Tsitsipas, who will rue his missed chances.
The Greek led 2-1 in the final set after clinching a break that led to his opponent throwing his racket in frustration, earning him a code violation.
He had openings to extend that advantage in the fifth game before losing his serve in the eighth, only to quickly forge his way back in front to move to the brink.
Yet a gripping set of tennis that saw a combined total of 16 break-point opportunities somehow went Djokovic's way, a memorable victory wrapped up when Tsitsipas slashed a tired-looking backhand wide.