Medvedev was a set down against the world No.1 and No.1 seed, but he rallied to a stunning 3-6 6-3 6-3 victory at the ATP Masters 1000 tournament on Sunday (AEST).
A finalist at the Citi Open and Rogers Cup, the No.9 seed from Russia will contest his third consecutive final, with David Goffin next up after the No.16 seed beat Richard Gasquet 6-3 6-4.
The first half was a clinic as Djokovic produced an almost flawless display, hitting nine winners and just three unforced errors, compared to Medvedev's 11.
Djokovic, who won 75 per cent of his second serves to Medvedev's 36 per cent, made the decisive breakthrough in the sixth game to move ahead 4-2 and the Serbian star never looked back, wrapping up the set in 34 minutes.
Medvedev continued to take the match to Djokovic in the second half, but the 16-time grand slam champion simply had all the answers against the Russian.
That was until Djokovic's serve was finally penetrated, Medvedev nailing a powerful forehand winner into the corner for a 5-3 lead.
It was the first sign of tension from Djokovic, who had been in control but saw his advantage wiped out by the aggressive Medvedev heading into a third and deciding set.
Djokovic was rattled, the match dramatically swinging in Medvedev's favour as he blitzed the Serbian with some incredible tennis to claim the break and a 2-1 lead.
Medvedev was simply irresistible, his ferocious serve stifling Djokovic and helping to complete a stunning comeback in the semi-finals.
Earlier, Goffin surged into his first Masters 1000 final after outclassing veteran Gasquet in straight sets.
"I'm really happy," Goffin said. "It's a tournament I like and I've played the best tennis here in the past few years. I'm really happy to reach my first Masters 1000 final here. It's a great moment for me."