The Czech, seeded third here, lost the first set and faced three match points in the second-set tiebreak, but he managed to survive.
As Federer started fading away, Berdych raced to a 3-6, 7-6 (8), 6-4 win for his first appearance in the final here.
"For me it is a celebration of tennis because I like to play him [Federer]," said Berdych, who is making his second successive final after losing to Jo-Wilfried Tsonga in the Marseille on Sunday.
"I am extremely happy to get to the final and I will do whatever I can to be ready for it. I will try my best to bring the best tennis to the court."
Djokovic has 12-1 career record against Berdych, with the Czech's only win coming in the semis of the 2010 Wimbledon.
The world No 1, however, knows what his opponent is capable of and said: "Tomas, if he serves well with a high percentage of first serves, he can beat anyone. He has proven that in the past, so I'm going to have to be on top of my game.
"I want to win this title. I will try to enjoy the match and of course fight to get to the trophy."
Trying to reach his first final of the year after losing to Andy Murray in the semis of the Australian Open and getting knocked out at the Rotterdam quarter-final by Julien Benneteau, Federer took the first set comfortably, breaking Berdych in the eighth game and then serving out for the set.
The five-time Dubai champion and twice runners-up then dropped his serve in the sixth game of the second set, but he broke back as Berdych served for the set at 5-3.
He then had three more breakpoints in the 11th game and three match points in the tie-break, but the Czech survived.
Berdych then got a head start in the deciding set, breaking Federer in the fifth game, and then he just cruised towards the finish.
"Pity to lose that one, but Tomas did well to hang in there," Federer said. "Obviously I leave this match with a lot of regrets.
"I think it's the third time I lost these match points against Tomas, twice in singles and once in doubles. It's just one of those matches you feel you should have won but end up losing."
Earlier Mahesh Bhupathi, a four-time doubles champion in Dubai, and Michael Llodra reached the doubles final, defeating Rohan Bopanna and Rajeev Ram 6-3, 6-7, 10-5. They will meet Nenad Zimonjic and Robert Lindstedt - 7-6, 7-6 winners over Mikhail Youzhny and Jonathan Erlich - today.
Dubai Sports, from 2pm
@ For more on DUBAI TENNIS CHAMPIONSHIPS, visit thenational.ae/topics