Cresciuto calcisticamente nel Deportes Tolima, con il club milita dal 2013 al 2016 nella massima serie colombiana, totalizzando globalmente 144 presenze e 5 reti in quattro stagioni.
Il 23 agosto 2016 passa per 3 milioni di dollari al Boca Juniors, firmando con la società argentina un contratto valido fino al giugno 2020. Esordisce il 29 ottobre contro il Temperley (vittoria per 4-0) allo Bombonera, disputando gli ultimi diciassette minuti di gioco. Il 19 agosto 2017 segna il primo gol con la maglia gialloblu, nell'amichevole vinta per 2-1 contro i paraguaiani del Cerro Porteño. Il primo gol ufficiale è datato 10 dicembre 2017, contro l'Estudiantes (1-0). Vince la Primera División argentina nel 2017-2018.Viene espulso in occasione della finale della Coppa Libertadores 2018 contro il River Plate ai tempi supplementari.[1].Un neo nel suo trascorso nel club,che è stato comunque positivo.
Zenit
Inizia la stagione seguente con il Boca, ma il 30 gennaio 2019 è acquistato a titolo definitivo, per 18 milioni di dollari[2], dai russi dello Zenit San Pietroburgo, con cui sottoscrive un contratto di quattro anni e mezzo[3].