Serena Williams kept alive her hopes of a record-equalling 24th Grand Slam singles title at the US Open with a 4-6 6-3 6-2 win over Tsvetana Pironkova.
The American six-time champion, 38, struggled early on with the variety of shots from the unranked player who was in her first tournament in three years.
Pironkova, 32, broke in the fifth game en route to taking the first set.
The Bulgarian tired as Williams took the second and then broke twice more in the third to seal a semi-final spot.
The veteran will now play former world number one Victoria Azarenka or Belgian 16th seed Elise Mertens.