The 31-year-old full-back made 284 appearances for the north London club after joining from Auxerre in 2007, but will move to the Etihad Stadium on a three-year deal after his Arsenal contract ends on June 30.
Sagna confirmed late last month that he was set to leave Arsenal when negotiations over a new deal faltered, with his future the subject of much speculation.
Serie A club Inter were among those linked with the France international before City completed their swoop on Friday on a free transfer.
"Manchester City are delighted to announce that Bacary Sagna will join the club for next season," read a statement on their official website.
"The 31-year-old full-back will complete his transfer from Arsenal on a three-year contract following the World Cup in Brazil, where he is currently on duty with the French squad."
During his time at the Emirates Stadium, Sagna won one trophy as he helped the club to the FA Cup in May at the end of his final season with the club.
He will link up with former Arsenal team-mates Samir Nasri and Gael Clichy at City, having become their first signing of the close-season, with the former Auxerre man voicing his gratitude to Arsenal in an open letter earlier this week.
Prior to his move, he wrote on his official Instagram page on Thursday: "I just wanna thank the whole Arsenal FC.
"A family to me, a club who taught me so much in seven years, a club where I had the chance to progress day by day, a club who always gave me trust whenever I was personally not at my best, a club who changed the kid I was into the man I am today.
"I wanna to thank the coach Mr Wenger who believed in me, gave me his trust and clearly changed my life."
Sagna, who will likely compete with Pablo Zabaleta for a starting berth at City, looks set to feature for France in their FIFA World Cup opener against Honduras on Sunday.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.