Elina Svitolina faced 20 break points against Elena Rybakina, saving 16 of them to guide her to an upset win over the World No. 2 on Wednesday night and send her through to the Rome semifinals for the first time in eight years.

Rome: Scores | Draws | Order of play

The fighting spirit Svitolina showed in her come-from-behind 2-6, 6-4, 6-4 victory in 2 hours and 23 minutes has long been a hallmark of her decorated career, which includes two Rome titles. She won those titles in back-to-back years in 2017 and 2018, the latter marking the last time she reached the semifinals.

Until now.

“After giving birth to our beautiful daughter, Skai, it’s really special for me to have these kinds of moments on the court,” Svitolina said in her on-court interview. “Coming back to the Top 10, playing big matches, winning them, it gives me such an amazing and really precious feeling to continue and to go for more.”

With the win, Svitolina improves to 4-4 against Rybakina at the WTA Tour Driven by Mercedes-Benz level and advances to face another multi-time champion, Iga Swiatek. Swiatek, a three-time Rome winner, moved through to the semifinals earlier Wednesday with a 6-1, 6-2 victory over Jessica Pegula in 67 minutes.

It sets up the sixth meeting between Svitolina and Swiatek, with Swiatek holding a 4-2 edge in the head-to-head. Svitolina won their most recent encounter, however, in their lone matchup this season at the Indian Wells.

How Svitolina withstood Rybakina’s pressure

Before she could book her semifinal spot, she had to survive a barrage of break points from Rybakina. Here’s a look at some of the biggest ones she saved during the match.

Rybakina leads 5-2: Serving to stay in the set, Svitolina saved three break points — first with a forehand winner, then an overhead and finally when a Rybakina backhand sailed long. Rybakina eventually closed out the set with a crosscourt forehand strike, but the game was the first spark of Svitolina’s turnaround.

Rybakina leads 6-2, 2-3: After earning her first break of the match for 3-2, Svitolina found herself in a precarious position facing triple break point. She saved the first with a running forehand winner and caught the line with another to erase the second before Rybakina’s ensuing forehand missed wide on the third. After Svitolina returned the favor with her own forehand error, she capitalized on a poor drop shot from Rybakina and struck another winner to eventually hold for 4-2.

Rybakina leads 6-2, 3-4: A double fault and a backhand error gave Rybakina another break point, but Svitolina again answered with a forehand winner — her most reliable shot all night — and held for 5-3. Rybakina threatened again at 15-30 two games later, but Svitolina navigated the murky waters to take the second set.

Svitolina takes charge in the decider

Svitolina didn’t save a break point in the third set as Rybakina converted both of her chances, but it didn’t matter as the Ukrainian controlled the rallies and, more importantly, the scoreboard.

After Rybakina opened with an ace, Svitolina won three straight points to earn double break point. Rybakina saved both, prompting a roar of frustration from Svitolina, who turned around and converted her third chance to break for 1-0 when Rybakina missed a smash.

Two games later, another Rybakina error handed Svitolina a double-break cushion. Even after Rybakina broke in back-to-back service games — while getting broken herself in between — Svitolina never wavered. Serving at 5-4, the 31-year-old closed out the match with a powerful serve that Rybakina couldn’t handle, improving to 7-1 in three-set matches this season.

The result is just the third semifinal at the Internazionali BNL d’Italia between former Rome champions in the Open Era, following Martina Hingis vs. Venus Williams in 2006 and Jelena Jankovic vs. Serena Williams in 2010.

After reaching the semifinals in Dubai and Indian Wells earlier this season, Svitolina has now made three WTA 1000 semifinals in a season for only the second time in her career (2017). Her 15 career WTA 1000 semifinals tie Karolina Pliskova and Coco Gauff among active players; only Swiatek (22) and Aryna Sabalenka (21) have more.