Federer kom tilbake etter å ha tapt første sett og slo Djokovic 3-6, 6-3, 6-2. I finalen møter han tsjekkiske Tomas Berdych.
Djokovic fikk en god start i semifinalen, men serberen ble hardt straffet da han begynte å gjøre mange feil.
– Stort steg i riktig retning
– Det er aldri lette kamper mot Novak. I dag fikk jeg en tøff start, men publikum hjalp meg underveis. Jeg liker å spille aggressivt. Seieren var et stort steg i riktig retning og den gir meg mye selvtillit, sa Federer etter kampen.
32-åringen trøblet fælt i 2013. Den svake formen har sendt Federer helt ned til 8.-plass på verdensrankingen, som er hans laveste plassering siden 2002.
Fredagens seier var Federers første seier over Djokovic på fire kamper. Innbyrdes fører sveitseren an med 17-15.
Møter tsjekkisk motstand
Veteranen Federer fikk mye jubel fra de 5000 frammøtte i Dubai. Han har tidligere vunnet turneringen seks ganger.
Tomas Berdych tok seg til finalen etter 7-5, 7-5 over tyske Phillip Kohlschreiber. Tsjekkeren har vunnet sin elleve siste kamper. Han var i Dubai-finalen også i fjor, men da tapte han for Djokovic.