Born in Sora, Lazio, Zappacosta joined hometown's Sora's youth setup in 1998, aged six, as a forward. In 2006–07 season, he was a player of Sora's under-15 team in Lazio Region Giovanissimi League. In 2008, he moved to neighbouring Isola Liri, appearing in Campionato Nazionale Dante Berretti under-20's, and made his senior debut for the side in the 2009–10 campaign; obtaining a total of 14 caps and one goal in the league.
In January 2011 Zappacosta joined Atalanta in a co-ownership deal for €60,000 transfer fee. He played for the Primavera for six months. He appeared during the pre-season with the main squad.
On 31 August 2011, at age 19, he was signed by Avellino initially in temporary deal. The loan was turned into a co-ownership deal for €40,000 fee in 2012, after Atalanta bought him outright from Isola Liri for an undisclosed fee.
He played 3 seasons for Avellino, which the first two seasons in Lega Pro Prima Divisione, winning the championship of the Group B of the third-tier in the 2012–13 season as well as crowded as the grand champions after winning Trapani of the Group A. After promotion to Serie B he decided to tattoo the date "05.05.2013". The following year he scored a debut goal in Serie B in the match won 2–1 against Novara, standing out as one of the best full-backs in the league.
On 4 June 2014 Zappacosta returned to Atalanta for €900,000 fee, signing a four-year deal. He made his official debut with Atalanta on 23 August 2014 against Pisa in a 2–0 win in the third qualifying round of the Coppa Italia. On 31 August 2014 Zappacosta made his debut in Serie A, starting in a 0–0 home draw against Verona. On 6 January 2015 he scored his first Serie A goal in a 2–2 draw to Genoa; repeated the following week against Chievo in Bergamo.
On 10 July 2015 he was sold to Torino, in the same transfer that brought the midfielder Daniele Baselli to Piedmont, for a total of €10 million transfer fee. He scored his first goal for the club on 28 October during a 3–3 draw at home to Genoa.
On 31 August 2017, he was sold to Chelsea for a reported fee of €28 million plus bonuses. He signed a four-year deal at Stamford Bridge. The transfer was completed minutes before the transfer window shut on deadline day. He made his full debut and scored his first goal for Chelsea on 12 September 2017, in a 6–0 home win against Qarabağ FK, in the opening group match of the Champions League. With this goal, Zappacosta became the 100th Italian player to score a goal in the Champions League
During his period in Irpinia, he made his debut with the Italy under-21 on 5 September 2013 in a 2015 UEFA European Under-21 Championship qualifier match against Belgium, lost 3–1. He also received a call-up from Italy under-21 Serie B representative team against a team of free agent that was trained in a camp held by Italian Footballers' Association, in August 2013.
He took part in the 2015 UEFA European Under-21 Championship in the Czech Republic, playing as a starter in the right full-back position in all three games disputed by Italy, who were eliminated in the group stage.
In May 2016, Zappacosta was called up to the senior national team by coach Antonio Conte in preparation for the UEFA Euro 2016. He was subsequently included in the list of 30 provisional players for the tournament. On 31 May, he was named one of three reserves for the senior side for Euro 2016.
Updated 12 September 2017.
|Isola Liri||2009–10||Lega Pro Seconda Divisione||2||0||0||0||—||—||2||0|
|Avellino||2011–12||Lega Pro Prima Divisione||27||0||0||0||—||—||27||0|
|2012–13||Lega Pro Prima Divisione||24||1||1||0||—||2||0||27||1|