No.2 seed Aryna Sabalenka came from a set and a break down to defeat wild card Paula Badosa 4-6, 6-4, 6-4 and reach the Porsche Tennis Grand Prix semifinals for the third straight year. She will next face Anastasia Potapova, who upset No.4 seed Caroline Garcia 4-6, 6-3, 6-3.

The 2-hour, 30-minute result reprised Sabalenka's 7-6(5), 6-4 defeat of Badosa at the quarterfinal stage of the tournament last year and leveled her head-to-head with the Spaniard at two wins apiece. The Australian Open champion advances to her fourth semifinal in six tournaments so far this year; her overall 2023 record is now 22-3.

Sabalenka is seeking her first Stuttgart title after two consecutive runner-up showings -- in 2021 to Ashleigh Barty and in 2022 to Iga Swiatek.

Momentum shifts: For a set-and-a-half, the match was relatively straightforward. Only two service breaks broke the pattern of largely routine service holds. Both went to Badosa, thanks to a combination of timely backhand passes and Sabalenka errors. The Spaniard, who also saved three break points to serve out the first set, took a 6-4, 4-2 lead.

The quality of play had begun to heat up in the second set, with Badosa producing the shot of the match with a one-handed backhand lob at full stretch in the fifth game. But it was a fierce Sabalenka forehand that paved the way for the crucial break back for 4-4 -- part of a seven-game streak that saw the World No.2 move out to 3-0 in the third set.

The decider was a thriller in which both players went toe-to-toe across six deuce games and, in contrast to the first set, five breaks of serve in total. Badosa battled hard to peg Sabalenka back, but was also beset by a rising tally of double faults. The World No.31 coughed up nine, five of which came across her last two service games.

Sabalenka needed no further encouragement to go on the attack, and converted her second match point with her 40th winner of the day, a backhand into the open court.

Sabalenka on breaking back for 4-4 in set two: "I was just talking to myself and saying, OK, just try one more time, just try to put the ball back, and then run and move and try to win this game and probably you can win this set. Then who knows what's gonna happen in the third set? Definitely that game was the key game."

Potapova continues to hit milestones: No.24-ranked Potapova had never before defeated two Top 10 opponents in one tournament, nor gone beyond the quarterfinals at WTA 500 level or above. She changed both of those statistics with her 2-hour, 12-minute upset of Garcia, which improved her record against the Frenchwoman to 2-1.

The result was also the third Top 5 win of Potapova's career, following her defeats of Angelique Kerber at Roland Garros 2019 and Anett Kontaveit at Prague 2022.

Potapova fired 19 winners to Garcia's 34, but also committed 42 unforced errors compared to her seeded opponent's 69.

Highlights: Potapova d. Garcia

"To be honest, I don't know," Potapova said when asked how she pulled out the win. "Because today, I didn't play my best in the first set, or actually in the second set either. I'm very happy that in the third set I found a way."

Potapova was eager in her anticipation of a first-time encounter with Sabalenka in the last four.

"Aryna is my good friend, and I think it's going to be fun. I've been waiting for this match, actually. I really wanted to play against you, Aryna, I don't know if you're watching!"