The 34-year-old Serbian was tested by the 22-year-old Canadian lefthander in the closely-fought three-set encounter before clinching a 7-6 (3), 7-5, 7-5 victory to enter his seventh final at the All England Club in London, U.K.
Djokovic will now face Italy’s Matteo Berrettini in Sunday’s final as he attempts to clinch a 20th Grand Slam trophy to tie the all-time record held jointly by rivals Roger Federer and Rafael Nadal.
Earlier in the day, Berrettini, 25, made history by becoming the first Italian — man or woman — to reach the singles final at Wimbledon.
Shapovalov, who made his Grand Slam semi-final debut on Friday, was looking to become the first Canadian men’s tennis player to win a major in the singles event.
His compatriot Milos Raonic was stopped short by Britain’s Andy Murray in the 2016 Wimbledon final.
In 2019, Bianca Andreescu became the first Canadian Grand Slam singles winner when she beat Serena Williams at the U.S. Open final.
A new Wimbledon champion will be crowned on the women’s side of the draw on Saturday when world No. 1 Ashleigh Barty from Australia takes on Czech eighth seed Karolina Pliskova.
After initially capping the attendance at 50 per cent, the tournament moved to permit maximum capacity crowds from the quarterfinals stage onwards.
Last year’s event was cancelled because of the COVID-19 pandemic.