The world number one and defending champion recovered from a slow start at the Rothenbaum to outplay his opponent with a beguiling mix of fierce groundstrokes and deft drop shots.
Davydenko, the world number 20, led 2-0 and had break points for 3-0 in the first set before the Swiss found his rhythm. The Russian double-faulted to lose serve early in the second set and Federer took full advantage, confirming victory with a forehand winner after 71 minutes.
In the final he will either play Richard Gasquet, the French teenager who upset him in the Monte Carlo Masters quarter-finals last month, or Belgian Christophe Rochus. Their semi-final was due to follow Federer's.
The Swiss, who will be seeking to complete his grand slam collection by winning the French Open when it starts on May 23, has now won 40 of his 42 matches this year. He has yet to drop a set in Hamburg.