Rafael Nadal booked his place in the Swedish Open final by beating Duje Ajdukovic over three sets in Bastad.
It will be the first final Nadal has competed in since the 2022 French Open, after overcoming unseeded Croat Ajdukovic 3-6 6-4 6-4 in two hours and 12 minutes.
On Sunday, the 38-year-old Spaniard will face seventh seed Nuno Borges, of Portugal, who beat unseeded Thiago Agustin Tirante, of Argentina, 6-4 6-3 in their semi-final.
"It was a very tough match - my opponent has one of the best backhands I have played against," said Nadal.
"He came here with a lot of confidence. I was trying to push him back and it was very difficult. I found a way to survive."
The final will be Nadal's 131st tour final, and 72nd on clay.
"It is always a good feeling to get back into a final," he added.
"I'm still in this process of recovering a lot of things that I lost because I had an important hip surgery almost a year ago. Things are not going that easy but I am fighting."
Nadal was also set to play in the Swedish Open men's doubles semi-final on Saturday with Casper Ruud, but the pair pulled out with Nadal conserving his energy for the singles final.
Their withdrawal sends Brazil's Orlando Luz and Rafael Matos into the final.
Nadal was competing in the doubles as preparation for his doubles partnership with Carlos Alcaraz at the Paris Olympics this summer.
The Croatian took the first set 6-4 but Nadal hit back with a strong performance in the second to win it 6-3.
In the third Nadal started well with a double break to race to a 3-0 lead.
But in the fourth game Ajdukovic had two break points on Nadal's serve and broke at the second time of asking.
The break sparked a fire in Ajdukovic, who held and then broke again to level the third set 3-3.
Nadal was the next to break in a close encounter and celebrated wildly when he saved multiple break points to hold and lead 5-3.
Ajdukovic served to stay in the match and held, before Nadal did the same to claim victory.
Across the match Nadal had six break points, winning each one. Ajdukovic, meanwhile, had 10 break points but could only convert five.