Defending champion and top seed Roger Federer beat Japan's Kei Nishikori in a high-quality quarter-final in the Shanghai Masters.
Federer, 37, won 6-4 7-6 (7-4) against the world number 12 after coming from 4-1 down in the second set.
The Swiss, aiming for his first Masters title since winning this event last year, will play Croatia's 19th-ranked Borna Coric in Saturday's semi-finals.
The winner will face Novak Djokovic or Alexander Zverev in Sunday's final.
Coric, 21, beat 20-time Grand Slam champion Federer in the Halle final this year.