Novak Djokovic will face Karen Khachanov in the final of the Paris Masters after defeating Roger Federer in a spectacular semi-final.

The world number one secured his 22nd consecutive victory after edging out the Swiss great 7-6 (8-6) 5-7 7-6 (7-3) in three hours and two minutes, despite failing to break serve.

It means Djokovic will contest his fourth final in a row after a stunning run of form in the latter half of 2018 and now leads Federer 25-22 in career head-to-head.

An engrossing first set saw Federer save four break points in the eighth game, which featured a quite brilliant overhead from the Swiss after a Djokovic passing shot caught the top of the net and threatened to hit him in the face.

Djokovic saved a set point at 5-6 in the tie break before celebrating with gusto when a stray Federer backhand gifted him the opener.

Federer faced two break points in the opening game of the second set as Djokovic threatened to take control, but matters stayed on serve until a few minutes of uncharacteristic sloppiness from the Serb gave Federer a chance to level, which he took with a fizzing forehand winner.

Djokovic, who took an awkward tumble when stretching for a forehand, received a warning for smashing his racquet on the floor after passing up a second break point at 4-4 in the third.

It did not prove a costly error, though. Federer hit his second double fault of the match as he collapsed in the tie-break, allowing Djokovic to take the win when Federer netted a forehand.

Djokovic will face Khachanov in the final after the Russian powered past Dominic Thiem 6-4 6-1.

The 22-year-old reached his first Masters 1000 showpiece after seeing off the sixth seed in 71 minutes – the same time it took Djokovic to win the first set against Federer.

Khachanov, who won nearly 70 per cent of points on serve on Saturday, will rise to world number 11 if he wins Sunday's final.