The Serbian came from a set down to beat the Swiss former world number one 4-6 6-3 6-2.
"Every time we play it's a great match, challenging and intense," BBC Sport quotes Djokovic as saying. "He was better than me in the first set and it wasn't easy.
"I just had to stay confident and focussed and wait for my chances. I was serving well and just kept patient and in the end it paid off."
Djokovic will face David Ferrer in the final on Sunday.