Dal 2013 al 2018 ha giocato nel campionato messicano, dove ha vestito solamente la maglia del Pachuca.
Il 30 agosto 2018 approda nel calcio europeo firmando in Olanda con il PSV Eindhoven, dove raggiunge il connazionale, amico ed ex compagno di squadra (tra il 2014 e il 2017 esattamente) al Pachuca oltre che compagno nelle avventure in nazionale Hirving Lozano.[2][3] Il 3 luglio 2023, dopo 5 stagioni con la maglia biancorossa, approda al Guadalajara.[4]
Nazionale
È stato convocato per le Olimpiadi nel 2016. Il 7 agosto 2016 realizza 4 gol contro le Figi (partita vinta per 5-1 dalla sua nazionale).[5]
Debutta lo stesso anno con la nazionale maggiore, con cui poi disputerà la Gold Cup 2017 e i Mondiali 2018; per disputare quest'ultima competizione ha rimpiazzato il 14 giugno (pochi giorni prima del debutto della sua squadra contro la Germania) l'infortunato Diego Reyes.[6][7]