Djokovic, who had a set and a service break lead in the match, eventually beat the fourth-seeded Berdych 6-0, 5-7, 6-4.
"You don't expect anything less than hard work against someone who has been a top 10 player for many years," Djokovic said. "Even when it went as perfectly as possible in the first set and I was a break up I knew it wasn't over."
Despite the lead, Djokovic started making too many errors - 48 unforced errors in all — to allow Berdych back into the match.
"There were a lot of unforced errors because I just wasn't feeling the ball great," Djokovic admitted.
Berdych had reached the final in the last two years, losing out to Djokovic in 2013 and Federer in 2014.
Federer secured his passage to Saturday's final with a 6-2, 6-1 win over lucky loser Borna Coric.
"Maybe I did have just a bit of too much variety for him today, and I made it difficult," Federer said. "And clearly it was also part of the game plan to check him out how he was going to handle the slice and the speed, the chip and charge and the serve and volley a bit, and I'm happy for me it worked out very well."
Federer offered Coric three break point opportunities and had his serve broken once in the match, in the fifth game of the first set.
In the end, however, Federer had little trouble ending Coric's magical week in Dubai.
"I gave my best," Coric said. "My best wasn't even close enough, good today, but what you can do."
Federer or Djokovic have won the Dubai title 10 of the last 12 years. Federer's won six times and Djokovic's looking for his fifth victory.