World number five Li Na withstood a late comeback from Petra Kvitova to beat the fifth-seeded Czech 6-3 7-5 on Friday and set up a Stuttgart Grand Prix semi-final with American qualifier Bethanie Mattek-Sands.
The second seed from China was put under early pressure by a series of sizzling Kvitova groundstrokes but responded by rattling off five consecutive games to snatch the first set.
World number eight Kvitova took an early 2-0 lead in the second set before Li bounced back again, reeling off another five straight games.
The Australian Open runner-up then twice had her serve broken as the mercurial Kvitova blasted a string of superb service returns past her opponent to level at 5-5.
A fine volley and a brilliant return from an unimaginable angle put Li 6-5 ahead and she finally went through on her third match point when the Czech netted a backhand.
Mattek-Sands advanced with a 6-4 6-2 win over German Sabine Lisicki.
Earlier, top seed and defending champion Maria Sharapova struggled to dispose of former world number one Ana Ivanovic of Serbia 7-5 4-6 6-4.
The world number two has had to work hard in the event, saving two match points in a three-hour battle with Czech Lucie Safarova in her first match this season on clay on Thursday.
"I prefer playing tough matches instead of training at home," the Russian told reporters. "It was hard to get my body going - I need some time to warm up."
Sharapova next meets third-seeded German Angelique Kerber who put out Kazakhstan's Yaroslava Shvedova 6-3 7-6.