World number one Dinara Safina came from behind to win an epic contest with Venus Williams 6-7, 6-3, 6-4 on Friday and set up an all-Russian final at the Italian Open in Rome.
Safina rallied from a set and 2-0 down to earn the right to face her compatriot Svetlana Kuznetsova, who barged past Belarussian Victoria Azarenka with a 6-2, 6-4 win.
The pair will meet in a final for the second week running after Kuznetsova beat Safina to capture the Stuttgart Grand Prix last Sunday and end a barren run stretching back to 2007.
"She [Kuznetsova] is another great player and she's playing some of her best tennis," Safina told a news conference.
"So I'll have to go out there and play my best like did I today."
American fourth seed Williams played the tidier, more intelligent tennis early on to go 4-1 and then 5-2 ahead.
Safina, who also fought back to get past China's Zheng Jie and Spain's Maria Jose Martinez Sanchez this week, refused to cave in and began to mixed up her game more.
She delivered some booming forehand winners to force a tiebreak but the American held her nerve to take it 7-3 with a dropshot.
Williams kept up the pace to go 2-0 up in the second set before Safina stormed back to win six of the next seven games to level the contest.
The Russian twice let a break advantage slip in the third set but she broke again with a powerful crosscourt backhand return.
She then saved four break points in the following game and failed to convert two match points before finally clinching an enthralling match that lasted over three hours.
"She was a little bit passive [at the end of the match]," added Safina. "I think she showed me she was maybe nervous too and I went for the shots and I did the right thing. She pushed me to play my best."
Despite the defeat, the WTA said Williams would jump from fifth to third in the world rankings next week, her highest position since 2003.
"She played well, continued to fight for every point," Williams said.
"She went for every shot. She just hit every ball as hard as she could. Obviously she didn't want me to have the first shot or to take control. If she can hit every ball that hard and keep it in, then congratulations to her."
Kuznetsova initially found it easy to attack 19-year-old Azarenka's serve and won the first set at a canter.
Azarenka began the second set by winning the first two games and was unlucky in the third, when Kuznetsova held a tough service game with the help of a bad call on the final point.
She protested and the incident seemed to rattle her. Her seventh seeded opponent took advantage to break back with a fine backhand cross court winner on the way to going 5-2 ahead.
The Belarussian threatened to come back, pulling up to 5-4 before the former US Open champion broke again to clinch the match.