The promising 21-year-old faces defending champion Nadal in the first round of the Australian Open next week and showed he was in fine touch with a 6-4 7-6 (7/3) victory over Russia's Khachanov.
"From the beginning until the end, great performance - at least I will talk about myself, from my side," Khachanov said in his post-match press conference.
None of the last eight men in the bracket has won a major title.
"It was a crazy match I was expecting it would be like this. I'm ready to run, to fight to play five sets. We played almost four hours and that's the only way to beat Nick," Khachanov added.
Khachanov has never appeared in a major semifinal. The winner will face No. 5 Casper Ruud on Friday for a berth in the championship match.
Djokovic admitted he had to stay mentally tough as the three-time champion shrugged off a controversial call against him to beat Edmund.