Justine Henin flirted with defeat before edging past Jelena Jankovic to reach the last four at the German Open.
Henin has had to play twice a day for the last two days
Henin trailed 3-6 4-4 after play was halted on Friday, and looked in control when she took the first two games.
But Jankovic stormed into a 4-0 lead in the final set before Henin recovered to win 3-6 6-4 6-4.
The light problems returned as Henin faced Svetlana Kuznetsova in the semis and the pair will come back on Sunday for the right to take on Ana Ivanovic.
Henin was serving at 2-3 down in the first set when play was stopped.
Serbian teenager and number 12 seed Ivanovic was leading her semi-final 4-3 when unseeded Ukrainian Julia Vakulenko retired.
Jankovic admitted she had not been able to handle Henin as the Belgian reeled off six straight games to take the deciding set.
"I don't know how that could happen," said the Serbian.
"I thought I had everything under control and I am really upset, I was so close to beating her. It was slippery out there and I didn't feel safe on the court.
"But it was all my own mistake that I lost, I wasted all my chances to win."
Henin said: "It's always difficult to explain how that happens but I fought all the way. I think she was a little nervous at the end."