Sergio Aguero will join Barcelona on a two-year contract when his Manchester City contract expires at the end of June.
The Argentine, 32, leaves City after 10 years at the club, during which he became their all-time leading goalscorer with 260 goals in 390 games.
His last appearance came off the bench in Saturday’s Champions League final defeat by Chelsea.
“We all know that Barcelona are the best club in the world,” said Aguero.
“I think I made a great decision to be here and of course it is a step forward in my career.
“I am really happy and hopefully I can help the team to win things.”
Aguero will have a buyout clause of 100m euros (£86m) at Barcelona.
Aguero, who won 15 major trophies during his time in Manchester, will join compatriot and close friend Lionel Messi at the Nou Camp as the Catalan club look to improve on a third-place finish in La Liga.
They finished behind Atletico Madrid and Real Madrid, having sold Luis Suarez to the former for just 6m euros (£5.2m) at the start of the season.
Messi was their top goalscorer with 38 goals in all competitions, with French duo Antoine Griezmann (20) and Ousmane Dembele (11) the only others to reach double figures.
Aguero leaves the Premier League sitting fourth on the list of all-time goalscorers with 184, and has the best minutes-to-goals ratio in the competition’s history.
He is also its highest-scoring overseas player, and in January 2020 overtook Alan Shearer to set the record for the most Premier League hat-tricks with 12.
Chelsea were linked with a moveexternal-link for Aguero, but he has opted to return to a league in which he scored 74 goals in five seasons for Atletico before his £36m move to City in 2011.
City centre-back Eric Garcia and Liverpool midfielder Georginio Wijnaldum have also been linked with free-transfer moves to Barcelona.