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 tie-break.
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.
Coric continued the best year of his career by reaching his second Masters semi-final with a 7-5 6-4 victory over Australia’s Matthew Ebden.
Serbian second seed Djokovic, who could move above Federer into second in the world rankings, beat South Africa’s Kevin Anderson in a rematch of this year’s Wimbledon final.
German Zverev, ranked fifth in the world, beat British number one Kyle Edmund in the quarter-finals.
Britain’s Jamie Murray and Brazilian partner Bruno Soares reached their second consecutive Masters doubles final with a 6-3 6-4 win over fifth seeds Juan Sebastian Cabal and Robert Farah.