Tommy Haas rolled back the years with some vintage tennis to keep his Wimbledon fairytale alive thanks to a stunning quarter-final victory over fourth seed Novak Djokovic.

The 31-year-old German, who had never been past the fourth round in 10 previous trips to Wimbledon, secured a 7-5 7-6 (8-6) 4-6 6-3 victory over his 22-year-old opponent to become the fourth German to reach the semi-finals in the open era.

Haas’ reward is a semi-final showdown with Roger Federer which will help make up for his disappointment of two years ago when he was forced to pull out of a fourth-round clash with the Swiss master due to a torn stomach muscle, one of a series of injuries that have dogged his career.

"It’s unbelievable," Haas said.

"There no words for it. I’m playing my best tennis and getting this far is a great feeling. To be in the semi here really is amazing for me."

Originally unseeded, Haas was elevated to 24 when Gael Monfils withdrew and saved two match points against 11th seed Marin Cilic in his third-round match.

Haas, who is the 21st man aged 30 or over to reach the last four in the open era, belied his age by edging the thrilling baseline rallies and demonstrated his agility with some majestic volleys at the net.

Secure on his own serve, Haas gained the only break of the first set to take it 7-5 and served for a two-set lead only to be broken to love.

He was then forced to save three set points before reeling off five points in a row to crucially take the tie-break.

"It was huge, maybe the key to my success today," Haas said. "I got a little careless and, at 6-3 in the tie-break, I was yelling at myself."

Djokovic, who had entered the match having won 12 sets in a row, grabbed a lifeline by taking the close-fought third set 6-4. But in the fourth, Haas edged a tense fourth game on the Djokovic serve.

The Serbian saved two break points but Haas maintained the pressure to secure the all-important break and consolidated to move into a 4-1 lead and then held his nerve to serve out for a memorable victory.

Haas, whose victory over Djokovic in Halle last month was his first against a top-10 player for two years, knows he will have to find another gear when he takes on Federer.

He trails the world number two 9-2 in previous head-to-heads and let slip a two-set lead against Federer in the fourth round of the French Open.

"There is not much this guy can’t do but I will see if I can annoy him a bit," Haas said. "I’ll give it my best shot."