Italy defender Alessandro Florenzi, who was on loan from Roma to AC Milan last season, competed a permanent move to the Serie A champions, the two clubs announced on Friday.
Milan said the 31-year-old had signed a contract to June 2025.
Florenzi played 30 times for Milan last season as they won the Serie A title for the first time since 2011. He appeared 24 times in the league, scoring twice.
The Rome native came through the Roma youth system and made his debut in 2011 going on to make 279 appearances for the club, scoring 28 goals.
He made his last appearance for Roma in January 2020, in an Italian Cup loss to Juventus, before going on loan first to Valencia, then to Paris Saint-Germain for a season and finally to Milan.
Florenzi has played 48 times for Italy. His most recent cap came in the 0-0 Nations League draw against England in June when he came off the bench for the last three minutes.