Federer will be looking for his sixth Dubai title when he plays third-seeded Tomas Berdych of the Czech Republic in Saturday's final. Federer now leads Djokovic 17-15 in their career head-to-head meetings.
Djokovic established an early lead when Federer lost his serve in an error-filled second game of the first set. Serving at 5-3, Djokovic won the first set on his third set point of the game with a clean ace down the middle.
In the second set, Djokovic surrendered his serve in the sixth game to put Federer in position to even the score at one set apiece. Federer broke Djokovic's serve in the first and fifth games of the third set to set up the win.
Federer saved two break points when serving for the match in the final game.