Djokovic, who won the Wimbledon title in 2011, rarely hit peak form in a patchy semi-final on Centre Court, but showed all his battling qualities to overcome the Bulgarian 11th seed in a three hour and two minute war of attrition.
The 27-year-old, a six-time Grand Slam winner, will face seven-time Wimbledon champion Roger Federer or Canadian eighth seed Milos Raonic in his 14th Grand Slam final as he looks to avenge last year's final defeat against Andy Murray.
"I thought I started well, but once again I allowed my opponent to get back into it," Djokovic said.
"The fourth set could have gone either way but overall I'm happy to be in another Wimbledon final.
Also Read
"It's the semi-finals of Wimbledon playing against the future star. He was fighting and playing some great shots, so it was a tough match and it's a good win for me definitely."
"I'm looking forward to another championship match, especially considering I have lost the last couple of finals," he said.
"I will have to be at my best. It's a big challenge. It's the Wimbledon final, the biggest event we have in the sport, and I'm looking forward to competing in it.