The Serb grabbed hold of the early exchanges, moving ahead 3-0 as Berdych struggled to get his usually-dominant forehand going.
World number six Berdych got on the board in the next but soon he was down a double break at 1-5 as Djokovic converted his second break point.
The Australian Open champion couldn't close it out though, as Berdych staged a mini-fightback to pull it back to 5-3, saving a set point along the way.
The Czech then had a chance to level the set but he squandered a break-point opportunity before Djokovic saw out the set 6-3 in 42 minutes.
The world number two then gained an early break at the start of the second, with Berdych getting continually frustrated with a number of close line calls.
Djokovic threatened to move a double break up in the seventh game of the set but it didn't matter as he was soon wrapping up victory 6-3 6-4 by holding serve to-love.
The Serb will face either world number one Roger Federer or defending two-time champion Andy Murray in tomorrow morning's final.