Kafelnikov overcame 22 double faults and rallied to beat Bohdan Ulihrach of the Czech Republic, 5-7, 6-3, 6-4, and will meet unseeded Kenneth Carlsen of Denmark in the semifinals.
A two-time winner here in 1997 and 1998, Kafelnikov reached the semifinals of a tournament for the first time since February at Marseille.
Kafelnikov had nine double faults in the first set when he squandered a 5-3 lead, losing the last four games. But he broke Ulihrach's serve in the eighth game of the second set and broke serve twice early in the third set to take control of the match.
Despite being the top seed here, Kafelnikov is ranked just 34th in the ATP Champions race and has a 20-18 record this season.
Carlsen upset the third-seeded Johansson, 7-6 (7-3), 6-3 on Friday.
Federer continued his impressive grasscourt play with a 6-3, 6-4 victory over 19-year-old Russian Mikhail Youzhny.
Ranked No. 4 in the ATP Champions race, Federer is seeking his third title of the year and will meet Germany's Nicolas Kiefer in the semifinals.
Kiefer, the 1999 winner here, advanced to his first semifinal of the year with a 7-5, 6-4 win over countryman Alexander Popp. Kiefer knocked off fourth-seeded Pete Sampras in the second round on Thursday.