The Premier League side confirmed the goalkeeper's departure earlier this month when he reached the end of his contract and entered talks with Betis.
The 37-year-old, who was linked with a move to New York City FC in March, has signed a one-year contract at Betis with an option for another year included in the deal.
Nos vemos muy pronto 😉💪🏻💚 https://t.co/NjEItz2fdq— Claudio Bravo Muñoz (@C1audioBravo) August 30, 2020
Bravo will team up with former City boss and compatriot Manuel Pellegrini, who took charge of the Spanish team at the start of August.
It was Pellegrini who urged Betis to move for the experienced number one as they looked to strengthen at the back, having conceded 60 goals in the league last season.
Betis finished 15th in the Spanish top flight in 2019-20, five points clear of the relegation zone despite losing their last three matches.
Bravo is their second signing of the summer transfer window, following right-back Martin Montoya's switch from Brighton.
The Chile international spent four years with City after making the move from Camp Nou at Pep Guardiola's request. Although he started off as the first-choice goalkeeper at City, he was dropped after some disappointing performances and Brazil international Ederson was signed to take his place.
Bravo made 61 appearances in all competitions but was limited to just 17 matches in the 2019-20 campaign as they finished second to champions Liverpool.
He is the third player to leave the English side this summer, following German winger Leroy Sane, who left to join Bayern Munich, and club legend David Silva after his free transfer to Sociedad.
Meanwhile, last season's Premier League runners-up signed centre-back Nathan Ake from Bournemouth and 20-year-old winger Ferran Torres from Valencia.