Zappacosta begon met voetballen bij AS Sora, de club uit zijn geboortedorp. In 2008 vertrok hij naar Isola Liri. In januari 2011 werd Atalanta Bergamo mede-eigenaar van de speler. In augustus 2011 werd hij uitgeleend aan US Avellino. In totaal speelde de Italiaanse jeugdinternational 85 competitiewedstrijden voor Avellino in de drie seizoenen die hij er verbleef. In juni 2014 keerde hij terug bij Atalanta Bergamo, waar Zappacosta een vierjarig contract tekende. Op 31 augustus 2014 debuteerde de verdediger in de Serie A in het thuisduel tegen Hellas Verona. Op 19 december 2014 kwam Atalanta met het nieuws dat ze Zappacosta volledig overnam. Die situatie hield niet lang stand: in juli 2015 tekende Zappacosta een contract voor vier seizoenen bij Torino. Gedurende zijn eerste jaar bij de club kwam hij tot 25 wedstrijden in de competitie.