Djokovic broke Zverev in the sixth game on a double-fault from the German before winning 12 points in a row to serve out the first set and take a 2-0 lead in the second.
The third-ranked Serb converted his first match point with a forehand return winner across court.
"I was focused from the start,'' Djokovic said. "Mischa was trying to get to the net, but I really returned well. That was the key today.''
Djokovic will next face either Jo-Wilfried Tsonga of France or Feliciano Lopez of Spain.
"I haven't got a lot of success in the last two years here,'' said Djokovic, who lost in the first round in 2007 and in the second round last year. "But this year, everything is going well.''
Michael Llodra of France also advanced to the semifinals, beating Mikhail Youzhny of Russia 7-6 (4), 7-6 (3).
Llodra broke Youzhny in the third game of the second set with a backhand winner, but squandered his lead while serving for the match at 5-4 with a double-fault.
Barcelona Are The Best Team I Have Seen Recently - Maradona
Djokovic beats Zverev to reach Open 13 semifinals