The Swiss, won 7-6 (7-4) 7-6 (7-4) 6-4 to reach his 11th Wimbledon final, having last won the title in 2012.
He will face Croatia’s Marin Cilic on Sunday after the seventh seed beat American 24th seed Sam Querrey 6-7 (6-8) 6-4 7-6 (7-3) 7-5 on Centre Court.
Cilic, is into his second major final after winning the 2014 US Open.
In the women’s court ,Spain’s Garbine Muguruza won her first Wimbledon title with a straight-set win over five-time champion Venus Williams.
The 23-year-old saved two set points and won the last nine games in a 7-5 6-0 victory under the Centre Court roof.
Muguruza denied the 37-year-old a first major title for nine years, which would have made her the oldest female Grand Slam champion in the Open era.
It is 14th seed Muguruza’s second Grand Slam title after her French Open triumph over Serena Williams in 2016.