The 21-year-old's previous deal was due to expire at the end of next season but will now take the youngster through to June 2022.
Calabria has been given a chance to impress this season due to an anterior cruciate ligament injury suffered by Andrea Conti, who had joined from Atalanta BC in July.
"Davide Calabria has renewed his contract with the Club through to 30th June 2022," Milan confirmed on Twitter, alongside a picture of the player holding a 2022 shirt.
Marco Fassone, alla festa di Natale del Settore Giovanile annuncia: "Davide Calabria ha rinnovato fino al 2022!"@davidecalabria2 has renewed his contract with the Club through to 30th June 2022 ❤⚫ pic.twitter.com/FjtqCp53kn— AC Milan (@acmilan) 14 December 2017
Calabria has made six appearances in Serie A so far this campaign and also played the full 90 minutes as Milan beat Verona 3-0 on Wednesday to book a place in the Coppa Italia quarter-finals.