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".
San Francisco woman killed by stray bullet in Mexico City
The young woman's body is being flown back to Chicago on Wednesday for a burial Saturday in west suburban Bloomingdale. They described her "incredible work ethic" and passion for her job as news of her death emerged on Monday.
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.