Shanghai: Roger Federer was stunned by 13th-seeded Borna Coric of Croatia in the Shanghai Masters semi-finals on Saturday. Tne Swiss great later admitted that he was lacking "punch".

Coric won the match 6-4, 6-4 as the 20-time Grand Slam champion Federer put up an uncharacteristically in an error-strewn performance.

The 21-year-old Coric is facing Novak Djokovic in Sunday's final after the Serb thrashed Alexander Zverev 6-2, 6-1, leapfrogging Federer to number two in the world rankings.

Federer has not been at his best all week, dropping sets in the two opening matches of his wobbly title defence.

The 37-year-old top seed was more like his old self on Friday, defeating eighth seed Kei Nishikori in two high-quality sets.

But he made a slow start against Coric, ranked 19 in the world, getting broken in the first game.

There was a subtle shake of the head when Federer similarly lost his serve at the start of the second set.

"I thought he was better, I think he had more punch on the ball. He served better," said Federer, proclaiming himself pleased overall with his form.

"I feel like I'm explosive out there, returning well," he added.

"Serving, I think, it's okay, could be even a little bit better.

"I don't think I played a match where I didn't get broken, so that's something a bit more unusual for me." In contrast, Coric -- who is into his first Masters 1000 final -- was largely untroubled on his serve.

Federer won the Australian Open at the start of this year but has had a mediocre season by his sky-high standards.

He exited the US Open in the last 16 at the hands of unheralded Australian John Millman, ranked 55th, and only made the quarter-finals at Wimbledon. Coric, who has only two career titles to his name, has now beaten Federer twice -- the previous time was in the final at Halle this year.

With PTI inputs