The Serie A club announced the deal on Sunday, adding that Bennacer has signed a five-year contract.
Bennacer’s profile has risen sharply after the 21-year-old was named Player of the Tournament at the recent Africa Cup of Nations, where he helped Algeria win the title for the first time in 29 years.
However, Bennacer had already committed himself to Milan.
The club did not disclose financial details, but according to Italian media reports, Milan has paid Empoli 16 million euros ($18 million).
Bennacer joined Empoli in 2017 from Arsenal following a loan spell at Ligue 2 side Tours and impressed in Serie A last season despite his club’s relegation.
Arsenal had a buyback clause for Bennacer, who made only one first-team appearance for the English side, but rejected the opportunity.
Bennacer is the club’s third signing of the offseason after Rafael Leão, Theo Hernandez and former Empoli teammate Rade Krunic.
Source: FOX Sport