Karatsev showed astonishing defiance to beat the world No.1 7-5 4-6 6-4 in the longest ATP Tour match of the year on Sunday (AEST).
The No.3 seed from Russia saved 23 of the 28 break points he faced as his aggressive approach paid off, toppling the 18-time grand slam champion in a contest that lasted three hours and 25 minutes.
It was sweet revenge for Karatsev, who was beaten by the legendary Serbian at the semi-final stage of the Australian Open two months ago.
Djokovic had won 11 matches in a row in his homeland, but bowed out despite being 2-0 up in the first two sets as a solitary break in the decider ended his run.
Karatsev, the world No.28, said: "It was a long, tough match [against a] tough opponent.
"You have to put [in] like 200 per cent to beat this guy, it's like playing against a wall. And he also made some good shots.
"He doesn't give you any free points. He always makes you play and you have to be always there because once you miss a couple of shots, he just takes it very quickly. That’s how I lost the second set."
Berrettini secured his place in the final with a 6-1 6-7 (5-7) 6-0 victory over lucky loser Taro Daniel.
No.2 seed Berrettini only lost six points in the last set after Daniel came from a break down in the second before winning a tie-break to take the second semi-final the distance.
Heading into Monday's (AEST) final, Karatsev and Berrettini have never previously faced each other on the ATP Tour.