Roger Federer earned a first win over Novak Djokovic since 2012 to reach the Dubai Tennis Championships final.
The Swiss world number eight, 32, took advantage of a rain delay to fight back and claim an impressive 3-6 6-3 6-2 victory in one hour and 45 minutes.
It was a first win over the Serb in four attempts and denied the world number two the chance to level their overall head-to-head record at 16-16.
He will meet Tomas Berdych, who beat Philipp Kohlschreiber, in the final.
It gives Czech Berdych, who claimed a 7-5 7-5 victory, a chance to make amends for his defeat in last year's final to Djokovic.
Federer admitted he feared the worst again at the start, but recovered well by adopting a more aggressive policy.
"I think I was able to play a bit more aggressively as the match went on," Federer told the ATP Tour's official website.
"I knew I was in a bit of trouble (after the first set) and not looking good at all, because he has a tendency to really run with it and play more freely on your serve.
"It was just a matter of trying to play consistent but remain aggressive - sometimes being overly aggressive to see if it works.
"Then I started to serve very well, something I haven't been able to do really this week yet. I knew to have a chance (against Djokovic), I needed to serve well, so I'm just very happy I was able to deliver that."
World number two Djokovic won the opening set in convincing fashion but, after a weather-enforced break, 17-time Grand Slam champion Federer broke in the sixth game of the second set to force a decider.
Federer immediately broke his opponent in the third set and eventually consolidated his break after saving two break points.
A further break moved him 4-1 ahead and he closed out the match to end Djokovic's hopes of a first ATP Tour title in 2014.
It was a first win over Djokovic for Federer since beating him in the final of the Cincinnati Open in August 2012.