Grigor Dimitrov came from a set down to beat Jack Sock 4-6 6-0 6-3 and reach the decider of the ATP Finals.
The Bulgarian, ranked three places above world number nine Sock, gave up a 3-1 lead to lose the first set to the American, who surprisingly won the Paris Masters during a resurgent end to 2017.
But, after edging in front during a tight third set, it is Dimitrov who will contest the final against David Goffin.
The Belgian shocked heavy favourite Roger Federer in Saturday's first semi-final at the O2 Arena.
Both Dimitrov and Goffin will now feature in the final match of the ATP Tour calendar in London for the first time in their careers.
Dimitrov took charge of proceedings early on, playing a brilliant point by coming in on Sock's backhand, pushing his opponent out of position and then volleying into open court to earn the first break.
Sock saved a break point before holding with an ace down the T to get to 3-1 and then broke back when Dimitrov netted a rally ball.
And the momentum then swung as Sock moved through the gears, holding with newfound ease and drawing a long forehand error to see Dimitrov broken again in the ninth game.
The American brought up two set points and took the first of them when Dimitrov dragged an attempted backhand return from a second serve into the net.
The resilience that allowed Sock to come from behind and win the first set was nowhere to be seen in the second.
Dimitrov held confidently and then broke when Sock mishit a rally ball. He sent another careless forehand long two games later to give up a double break.
Sock came to the net and threw in some sliced drop shots during a rushed final service game in the second set, but then netted successive rally balls to gift Dimitrov an unexpected bagel.
It soon became apparent that Dimitrov would not have the third set all his own way, though, as Sock composed himself and began to attack his opponent's awkward slice with heavier forehands.
And the set duly stayed on serve until the eighth game, when an unfortunate net cord for Sock was followed by two double faults in quick succession that offered Dimitrov two chances to break.
The Bulgarian took the second of them with an inch-perfect forehand down the line to serve for a place in the final, which he secured with his fourth match point.
Dimitrov  bt Sock  4-6 6-0 6-3
Dimitrov – 25/33
Sock – 20/37
Sock – 3/5
BREAK POINTS WON
Dimitrov - 5/8
FIRST SERVE PERCENTAGE
Dimitrov – 64
Sock – 62
PERCENTAGE OF POINTS WON ON FIRST/SECOND SERVE
Dimitrov – 68/52
Sock – 62/45
Dimitrov - 91
Sock – 77
|Willian not ready to walk out on Chelsea|
|Arsenal striker Lacazette not counting on title miracle|
|Fury licence to be considered by BBBofC in January|
|Sarginson released by Titans|
|World Cup glory worth €350,000 to Germany stars|
|All Blacks skipper Read to undergo back surgery|
|I live day by day - Buffon ponders Euro 2020|
|Remarkable Rohit smashes third ODI double-century|
|West Ham eyeing Wilshere swoop in January|
|Bairstow up to six in unchanged England team|
|Klopp reveals hamstring scare for Liverpool star Salah|
|England can still win Ashes as Hoggard urges Root´s men to smarten up|
|Vuelta champion Froome asked to explain drugs test|
|FFA refuses to speculate on Scolari amid Socceroos interest|
|Mavs spoil Leonard´s season debut, LeBron enjoys career-high night|
|Ronaldo hoping to play with Benzema and Bale again|
|Smith: Pitch conditions in Perth to determine Handscomb fate|
|Packers star Rodgers cleared to return against Panthers|
|Mourinho takes aim at reporters as Man United boss leaves news conference|
|You can put the kickoff back at the 30 – Hester announces retirement|
|Roberts confirms Dodgers were ´very in tune´ with Stanton, Ohtani|
|Fleury set for Golden Knights return after two months in concussion protocol|
|Dodgers All-Star Seager set to avoid elbow surgery|
|´Bull****´ to suggest Chelsea can catch Man City – Conte|
|Pordenone would´ve deserved Coppa Italia progression, admits Spalletti|
|Azarenka granted wildcard for Australian Open|
|Root urges England to stand up and put things right|
|Man City haven´t won anything yet – Gundogan|
|Pierre leads Dinamo Sassari past Pinar Karsiyaka|
|Willian: Chelsea will keep fighting for Premier League title|
|Burnley aren´t the real deal – Dyche|
|Stoger wants to bring best out of BVB after breakthrough victory|
|Conte praises contribution of Hazard, Willian and Pedro|
|Inter 0 Pordenone 0 (AET, 5-4 on penalties): Nagatomo spares Serie A leaders´ blushes|
|Hodgson keeping Palace grounded despite dramatic late win|
|Zouma injury led to Turf Moor defeat – Hughes|
|Guardiola steers carefully around Mourinho criticism after United v City flashpoint|
|Guardiola considering January signings to bolster Manchester City squad|
|Get me in the mix – Ricciardo wants to join Vettel, Hamilton rivalry|
|Crystal Palace 2 Watford 1: Sako, McArthur stun Hornets|
|Huddersfield Town 1 Chelsea 3: Willian sparkles as Conte´s side return to winning ways|
|Burnley 1 Stoke City 0: Hosts go fourth after late Barnes winner|
|PSG escape punishment as LFP gives Lille transfer ban|
|Mainz 0 Borussia Dortmund 2: Stoger´s tenure begins with much-needed victory|
|Need to wrap a golf club for Christmas? Don´t ask Dustin Johnson for help|
|Ten Cate: Al Jazira will park three buses against Real Madrid|
|Gremio 1 Pachuca 0 (after extra time): Everton stunner sends Brazilians into final|
|Zidane focused on Club World Cup despite looming Clasico|
|Ibrahimovic brands Guardiola ´immature´ over Barcelona row|
|Gayle´s 18 sixes a new T20 record|
|Pogba has no regrets over rejecting Real Madrid|
|Gattuso denies contract rift with AC Milan goalkeeper Donnarumma|
|Where you at? Cleared Fury calls out Joshua|
|Pochettino: Alderweireld out until February|
|Wydad Casablanca 2 Urawa Red Diamonds 3: Marvellous Mauricio double proves decisive|
|Cardona given five-match ban for ´discriminatory´ gesture against South Korea|
|Fury clears comeback hurdle as UKAD proceedings resolved|
|Knee injury rules Wales´ Faletau out of Six Nations|
|James still settling at Bayern, says Heynckes|
|Pistorius bruised in alleged prison assault|
|Manchester City captain Kompany out for ´a short time´|
|Klopp: Liverpool need Lallana ahead of busy period|
|Spurs list Leonard as probable for season debut|
|It was diversity in education – Mourinho addresses derby fracas|
|I encourage City to celebrate - Guardiola defends players after Old Trafford controversy|
|I´m no actor – No regrets for Klopp over heated interview|
|Anderson: Duckett incident a non-event|
|Shingler commits to Scarlets|
|Everton were like United at Liverpool - Allardyce defends Anfield approach|
|Paulo Bento hired as Chongqing Lifan head coach|