Donnarumma grew up in the football academy of Club Napoli in his native Castellammare di Stabia. At age 14, he was signed for €250,000 by Milan, the team for which his elder brother, Antonio, had already played. Between 2013 and 2015, he was part of the Rossoneri youth academy, where he always played in the age group above him, beginning with the Giovanissimi, then the Allievi, and finally the Primavera. Three days before his 16th birthday, in February 2015, he received his first call-up to the senior team from manager Filippo Inzaghi. Though he did not feature in the league match against Cesena, his presence on the substitutes’ bench had required a special dispensation due to his age.
At the beginning of the 2015–16 season, Gianluigi Donnarumma was promoted to the senior team by manager Siniša Mihajlović, initially as the third-choice goalkeeper behind Diego López and Christian Abbiati. During Milan’s pre-season tour of China, he made his debut in an International Champions Cup match against Real Madrid on 30 July. Replacing López in the 72nd minute, he kept a clean sheet for the remainder of the match, but was one of two Milan players to miss his penalty shootout attempt in an eventual 10–9 loss. His subsequent starting appearance against Sassuolo in the final of the TIM Trophy saw him save two penalties in the shootout to secure Milan’s victory.
Donnarumma made his competitive debut in Serie A on 25 October against Sassuolo at the San Siro stadium; chosen to start ahead of López, he helped the team achieve a 2–1 victory after three matches without a win. At the age of 16 years and 242 days, he was the second-youngest goalkeeper to start a match in the history of Italian football, 13 days older than Giuseppe Sacchi, who coincidentally made his Serie A debut with Milan on the very same date, 73 years earlier. López subsequently hailed him as “the future of Milan and of Italian football”. Gianluigi Donnarumma kept his first clean sheet three days later in a 1–0 win against Chievo. After three successive victories featuring Gianluigi Donnarumma in the starting line-up, Milan avoided a defeat against Atalanta as a result of an impressive display from their goalkeeper, “Donnarumma worked miracles,” commented the Gazzetta dello Sport. His performances that year earned him a place among the top 25 of Don Balón’s ranking of the world’s best footballers under age 21.
By the start of 2016, Gianluigi Donnarumma had firmly supplanted López as the first-choice goalkeeper for Milan, who subsequently offered him a revised, three-year contract. His first appearance in the Derby della Madonnina, Milan’s crosstown rivalry with Internazionale, came on 31 January; the clash ended in a 3–0 victory after he stopped Éder from scoring. In March, he was briefly hospitalised after suffering a head injury in an on-pitch collision with Chievo’s Fabrizio Cacciatore. Donnarumma featured ahead of Abbiati in Milan’s 1–0 defeat to Juventus in the Coppa Italia Final, as the club failed to qualify for European competition at the end of the season.
In the club’s opening league match of the 2016–17 season against Torino, on 21 August, Gianluigi Donnarumma saved the first penalty of his professional career, he stopped Andrea Belotti’s shot in injury time, which enabled Milan to seal a 3–2 victory at home. He kept his first clean sheet of the season in the 1–0 victory against Sampdoria on 16 September. On 23 December, Donnarumma helped lead Milan to victory in the Supercoppa Italiana, saving Paulo Dybala’s penalty in a 4–3 shoot-out win following a 1–1 draw after extra time. On 15 June 2017 it was initially announced that Gianluigi Donnarumma would not be renewing his contract with Milan, however on 11 July, after much speculation, he renewed with Milan until 2021.
Gianluigi Donnarumma played his first European game in a 1–0 win against CS U Craiova in the first leg of Milan’s Europa League qualification match on 27 July 2017, in which he managed to keep a clean sheet. He also kept another clean sheet in the second leg the following week, as Milan beat their opponent 2–0. He kept his third concecutive clean sheet in Milan’s 6–0 win against Shkëndija. He kept another clean sheet in his first match in new Serie A season against Crotone. On 30 December 2017, Donnarumma played his 100th game for Milan in a 1–1 draw against Fiorentina, becoming the youngest player to make 100 appearances with Milan’s jersey. On 15 April 2018, Gianluigi Donnarumma became the youngest player to reach 100 appearances in Serie A, aged 19 years and 49 days, after a 0–0 home draw against Napoli.