Народився 20 листопада1996 року в місті Кіншаса. Вихованець футбольної школи клубу «Серветт». Дорослу футбольну кар'єру розпочав 2014 року в основній команді того ж клубу, в якій провів один сезон, взявши участь лише у 6 матчах чемпіонату, в яких двічі відзначився забитими голами.
До складу клубу «Янг Бойз» приєднався 2015 року[2]. 18 липня 2015 року відбувся його дебют за новий клуб в матчі першості країни проти «Цюриха»[3]. У сезоні 2015/16 Денис міцно застовпив місце в основному складі бернського колективу. Всього за два сезони встиг відіграти за бернську команду 50 матчів в національному чемпіонаті, забивши 2 голи.
У червні 2017 року Закарія підписав п'ятирічний контракт з «Борусією» (Менхенгладбах), де мав замінити Махмуда Дауда, який покинув клуб. За гравця швейцарській команді було заплачено 10 млн. євро[4]. Відіграв у Німеччині чотири з половиною сезони, протягом яких здебільшого був основним гравцем «Борусії».
31 січня 2022 року за 8,6 мільйонів євро перейшов до італійського «Ювентуса». У новій команді не пробився до основного складу і у вересні того ж року був відданий в оренду до англійського «Челсі».
14 серпня 2023 року за 20 мільйонів євро перейшов до «Монако», з яким уклав п'ятирічний контракт.
Виступи за збірні
У 2014 році дебютував у складі юнацької збірної Швейцарії, взяв участь у 8 іграх на юнацькому рівні, відзначившись 2 забитими голами.
З 2015 року залучається до складу молодіжної збірної Швейцарії. На молодіжному рівні зіграв у 5 офіційних матчах.
У 2016 році дебютував в офіційних матчах у складі національної збірної Швейцарії. У травні того ж року був включений до заявки національної команди для участі у фінальній частині чемпіонату Європи у Франції, проте в іграх континентальної першості участі не брав.
2018 року був включений до заявки збірної для участі у тогорічному чемпіонаті світу в Росії, дебютував на турнірі у першій же грі групового етапу, вийшовши на заміну за 20 хвилин до її завершення.