Khachanov overcame more misfortune as he held to level the third set at 2-2 despite Djokovic twice receiving the help of a net cord, but he could not survive more pressure two games later, scooping a backhand long to put his opponent on the brink.
The 12-time major victor prevailed despite picking up two code violations and accusing umpire Carlos Ramos of "double standards".
When Nishikori then bounced his own racket against the court in the fourth set without being given a warning, Djokovic yelled out "double standards" toward the umpire's chair - drawing boos from the Centre Court crowd.
But Djokovic appears to be building towards somewhere near his best again and, while made to work hard by Nishikori, he was good value for a 6-3 3-6 6-2 6-2 triumph.
'I feel like I'm peaking at the right moment.
"I didn't harm the grass, I know how I threw the racket". It's not the first time I've been in semi-finals, I've been here before but I'll try to enjoy this victory'.
"I think it's not fair, but it is the way it is in the midst of the emotions of a match".
‘Totally unacceptable’: Beijing vows retaliation if United States taxes $200bn of Chinese goods
The latest moves came last Friday when the Trump administration's tariffs on $ 34 billion worth of Chinese goods took effect. There have been no confirmed high-level talks between to two sides since early an early June visit to Beijing by U.S.
After racing through the first set, Djokovic was handed his first code violation for unsportsmanlike conduct after bouncing his racquet into the grass in frustration at squandering three break points in the third game of the second set.
The 2011, 2014 and 2015 champion was clearly unsettled by the dispute, quickly surrendering the set.
Djokovic's mood was not improved by Ramos choosing not to punish Nishikori for imitating his earlier offence of bashing a racquet into the ground.
Djokovic created a first break point with an astonishing rally that concluded with a forehand down the line and a fist pump, before capitalising brilliantly at the second attempt.
With Nishikori serving to stay in the match, Djokovic wrapped things up after two and a half hours on the court on the first match point.