Federer, 31, has been in a worrying slump this season and found himself battling to stay in the race for the season-ending World Tour Finals in London.
But he appears to have found the form that has made him the greatest indoor player of all time, and continued his run with an impressive display against the highly-rated Bulgarian, who was seen off in just over an hour and a half.
Federer made light of the first set, but was tested in the second - although he eased to victory with a commanding tie-break.
Defending champion Juan Martin del Potro also reached the semis, with his 6-4 6-4 win over Paul-Henri Mathieu setting up a semi-final with another Frenchman, Edouard Roger-Vasselin.
The Argentine world number five - who has already qualified for London - hit 11 aces and only dropped six points on serve to claim victory in 79 minutes.
It was Del Potro's 300th ATP Tour win.
"It's a pleasure winning my 300th match on tour, doing it here in Basel, against Mathieu," Del Potro told the ATP website.
"I think I played really well. I don't know if I deserved that, but it's like a gift for all my efforts for many, many years of work. I am looking forward to [trying to] reach the final once again.
"I am trying to go far and repeat what I did last year."