Federer booked his place in the last four by beating Zverev but needed three sets – 7-5, 5-7, 6-1 to see off his opponents.
The 19-time Grand Slam winner’s path to winning his third title in London was made easier after Rafael Nadal pulled out of the tournament yesterday.
But Federer cut a frustrated figure in the early stages of his match after missing an opportunity to shore up the first set before winning the tie-break.
And the Swiss legend admits he was not happy with his own performance and claimed he often played too fancy.
“These are the situations that upset you after a while because you’re there and then you might get unlucky later but you should have made the first one,” Federer said.
“You get unlucky maybe because the first time you make a mistake but instead of trying to play it simple you try to play too fancy but again credit to Sascha for playing tough.
“He got into the match better and I was doing a lot of defending today.
“I wasn’t really happy that I couldn’t be more on the offensive but credit to Sascha for staying tough from the baseline.
The 36-year-old dominated the third and final set with Zverev unable to come back with an answer and even handed the world No 2 the win with a double fault for match point.
But Federer praised the 20-year-old for what has essentially been his breakout year on the tour.
“It’s a terrible match point but it doesn’t matter because I’m qualified for the semis beating a quality player in Sascha who’s had a breakthrough year in someways,” Federer added.
“I couldn’t be happier right now that I’m already qualified.”