Denis Shapovalov's fairytale run was ended by in-form star Alexander Zverev, who battled through to the final of the ATP Rogers Cup.

Canadian teenager Shapovalov captured the imagination of an entire country, after upstaging top seed and 15-time grand slam champion Rafael Nadal as well as Juan Martin del Potro en route to the semifinals in Montreal.

But the 18-year-old was unable to overcome the hurdle of fourth seed Zverev, who prevailed 6-4, 7-5 on Saturday.

READ:Federer books final berth

In a glimpse of the future, 20-year-old Zverev – a four-time winner on the ATP Tour this season – needed three match points to see off Shapovalov and earn a showdown with Roger Federer in a repeat of the Halle decider, which the latter won in straight sets.

It was an even contest in the first set, Shapovalov and Zverev going toe-to-toe until the ninth game.

Shapovalov double-faulted as he crumbled for the first time, handing Zverev a 5-4 lead, and the German served out the set.

As has so often been the case during the tournament, Shapovalov was not overawed, sticking to his aggressive style, much to the delight of the crowd.

And Shapovalov almost struck in the seventh game, but he wasted three break points at 0-40.

Zverev was as cold as ice from that point, though Shapovalov battled, claiming the decisive break for a 6-5 lead to silence the partisan stadium.

There was one last rally from Shapovalov, who saved two match points and earned three break point opportunities of his own, though Zverev fended off all of them.

Shapovalov sprayed a forehand wide and it gave Zverev a third chance to close out the match and he did.