Rafael Nadal won his 12th Barcelona Open title, saving a match point in a thrilling three-set victory over Greece's Stefanos Tsitsipas.
Nadal trailed 4-2 in the opener but recovered, breaking twice to take it.
World number five Tsitsipas showed great grit in the second set, saving two match points in game 10 game before levelling the match on a tie-break.
In a tight third set, Nadal faced a match point before piling on the pressure to win 6-4 6-7 (6-8) 7-5.
The victory, which took three hours 38 minutes, gave the 34-year-old his 61st clay court title and came against an in-form opponent who had won his maiden Masters crown in Monte Carlo last week.
"Winning the trophy here means a lot," said Nadal, who had only lost one set in 11 previous finals in the Spanish city.
"I have been increasing my level and this was an important victory for me."
Tsitsipas, who recovered from two sets down to beat Nadal at February's Australian Open, started this match strongly before the Spaniard turned the opening set around.
Nadal again came from a break down in the second set after Tsitsipas had regrouped well.
That took him to the brink of victory on the court named after him but Tsitsipas showed his own mettle to stay in the contest, recovering from 15-40 at 4-5 with two fine points, including a lovely touch volley winner on the second.
A topsy-turvy tie-break saw Nadal lead 4-2 then save two set points from 4-6 only to serve a double fault at 6-6 that helped Tsitsipas clinch it.
The third set was serve dominated until 4-5, when Nadal wobbled on his own delivery, but ultimately it was the Spaniard who proved just the tougher.
Meanwhile, in the Belgrade clay court final, Italy's Matteo Berrettini won his fourth career title.
The world number 10 beat Russia's Aslan Karatsev, who had stunned Novak Djokovic in the semi-finals 6-1 3-6 7-6 (7-0).
Elsewhere world number one Ashleigh Barty beat Aryna Sabalenka in the final of the Stuttgart Open to clinch her third WTA title of 2021.
The 25-year-old Australian fought back from a set down for the third time in as many matches in Germany to beat fifth seed Sabalenka 3-6 6-0 6-3.
Barty took 23 minutes to win the second set and, while she was broken at 3-1 in the third, she was not to be denied.
The title is just her second on clay after winning the 2019 French Open.