È un centravanti ambidestro, dotato di notevole tecnica e velocità.[2] Viene paragonato per movenze e stili di gioco aRonaldo.[3] Nel corso della carriera, alcuni problemi fisici ne hanno limitato il potenziale atletico.[4][5]
Incomincia la carriera nel 2001 nelle giovanili dell'Atlético Junior. Nel gennaio del 2008 passa alDeportivo Cali, in cui debutta in prima squadra nella massima serie colombiana il 12 luglio 2009 nella partita vinta 1-0 contro l'Envigado.
Nel mese di marzo del 2010, durante il Torneo di Apertura, si mette in evidenza segnando 5 gol in una striscia di 3 partite consecutive. In tutto con il Deportivo Cali segna 9 reti in 11 presenze. Il 7 marzo 2010 contro l'Once Caldas realizza una tripletta la partita viene vinta 3 a 0 grazie ai suoi gol. Il 18 aprile 2010 segna 2 gol nella partita vinta 5 a 2 contro ilCortuluá; nella stessa partita realizza inoltre anche 2 assist.
Il 22 giugno 2010 viene ceduto alla società italiana dell'Udinese, ma il 12 luglio dello stesso anno viene ceduto in prestito alGranada con cui totalizzerà 7 presenze nellaSegunda División spagnola, in una stagione che si conclude con la promozione della squadra nellaLiga.
Il 31 agosto 2011 è ceduto in prestito alLecce,[6] con cui debutta inSerie A il 26 ottobre 2011 nella partita persa 2-0 contro ilPalermo.[7] Segna il suo primo gol il 4 dicembre nell'incontro perso 4-2 in casa delNapoli.[8]Dal 19 febbraio al 4 marzo 2012 va segno con il Lecce in tre giornate consecutive in massima serie (contro ilSiena in casa, ilCagliari in trasferta e ilGenoa in casa), evento senza precedenti, poi eguagliato dal giallorossoMarco Mancosu nel2019-2020.[9] Il 7 aprile 2012 segna la sua primadoppietta con la maglia del Lecce e in Serie A nella vittoria per 4-2 contro laRoma.[10] Nonostante i suoi 7 gol segnati in 29 partite di campionato, il Lecce retrocede all'ultima giornata.
Nella stagione2012-2013 torna all'Udinese dopo il prestito, partecipando al ritiro estivo con la squadra friulana.[11] Il 12 settembre 2012 rinnova il suo contratto con l'Udinese per altri cinque anni, fino al 30 giugno 2017.[12] Riesce a mettere a segno il suo primo gol in maglia bianconera il 22 dicembre nell'incontro esterno pareggiato 1-1 con l'Atalanta. Il 14 aprile 2013 realizza la sua prima doppietta con la squadra bianconera, nella vittoria ottenuta per 3-0 aParma. Alla fine dell'annata risulta il secondo cannoniere della formazione dietroAntonio Di Natale, con 11 gol siglati in 22 partite.
Il 1º agosto, nella prima gara della nuova stagione, segna una doppietta nel terzo turno preliminare diEuropa League in casa delŠiroki Brijeg, battuto per 3-1; queste sono anche le sue prime due reti in competizioni UEFA per club della sua carriera. In campionato, il primo gol arriva il 25 agosto nella sconfitta per 2-1 sul campo dellaLazio; conclude la sua seconda stagione in Friuli con 31 presenze totali e 8 gol.
Nell'estate del 2014 il club friulano rifiuta un'offerta di 18 milioni di euro più bonus per Muriel presentata dall'Atlético Madrid.[13]
Il 22 gennaio 2015 Luis, dopo aver giocato altre 11 partite con la maglia bianconera, viene ceduto a titolo temporaneo con obbligo di riscatto allaSampdoria;[14] le cifre dell'affare sono 10,5 milioni di € per l'obbligo di riscatto (più 1,5 milioni di € di bonus nel caso in cui il giocatore raggiunga almeno 30 presenze in maglia blucerchiata entro il 30 giugno 2016).[15] Il calciatore sottoscrive un contratto fino a giugno 2019 scegliendo la maglia numero 24. Il 15 febbraio seguente esordisce in blucerchiato subentrando nell'intervallo aJoaquín Correa durante la garaChievo-Sampdoria 2-1 nella quale al 91' segna il suo primo gol con la maglia blucerchiata.[16] Il 1º marzo realizza un gol contro l'Atalanta, partita vinta dalla Samp per 1-2;[17] il terzo sigillo con il Doria lo sigla invece il 16 marzo seguente, dopo 3 minuti dall'ingresso in campo, nella gara vinta per 2 a 0 contro la Roma. Segna la sua ultima rete dell'anno nella partita persa 4-2 contro il Napoli.
La stagione successiva gioca i preliminari diEuropa League contro i serbi delVojvodina; dopo la sconfitta casalinga per 4-0, al ritorno mette a segno la rete del 2-0 finale, risultato che però non basta per superare il turno.[18] Gioca titolare nel 4-3-1-2 diZenga dalla prima partita diSerie A contro ilCarpi, in cui segna una doppietta e si procura il rigore realizzato dal compagnoÉder sull'1-0; la partita finirà 5-2 per i doriani.
Nell'estate del 2016, dopo anni trascorsi con la maglia numero 24, decide di optare per il classico numero 9.[19] Il 21 agosto, alla prima giornata di campionato, sigla il gol-vittoria in trasferta contro l'Empoli (0-1).[20] L'11 settembre, pur perdendo la Sampdoria 3 a 2 contro la Roma allostadio Olimpico, segna un gol al volo su lancio diVasco Regini.[21] Il 22 ottobre, nelderby colGenoa, segna il momentaneo 1-0 (partita finita poi 2-1) su assist diQuagliarella, segnando per la prima volta in una stracittadina.[22] Sigla poi un gol in casa dellaFiorentina su assist di Regini nel pareggio per 1-1 del 6 novembre,[23] e il 20 dello stesso mese trova una doppietta nella vittoria casalinga in rimonta per 3-2 contro ilSassuolo.[24] L'11 marzo 2017 decide il derby di ritorno, vinto per 1-0 (era dal1960 che i blucerchiati non vincevano entrambi i derby diSerie A).[25][26]
Realizza l'ultimo gol della sua avventura in blucerchiato il 21 maggio contro la sua ex squadra Udinese su rigore; al contempo viene espulso subito dopo la marcatura a causa di un'esultanza ritenuta dal direttore di gara irrispettosa verso i tifosi dellaDacia Arena.[27]
L'11 luglio 2017 viene acquistato a titolo definitivo per 20 milioni di euro più bonus[28] dalSiviglia, con cui firma un contratto di cinque anni.[29][30] L'esordio in Liga avviene il 19 agosto successivo, alla prima giornata contro l'Espanyol e il primo gol arriva il 17 settembre contro ilGirona.[31] Il 13 settembre esordisce inChampions League nella partita della fase a gironi contro ilLiverpool e il 24 ottobre inCopa del Rey segna il gol dello 0-3 contro ilCartagena nella partita di andata dei sedicesimi di finale.
Il 1º gennaio 2019 viene acquistato dalla Fiorentina in prestito con diritto di riscatto a 14 milioni di euro.[32] Esordisce con i viola il 13 dello stesso mese, giocando da titolare la partita degli ottavi di finale diCoppa Italia sul campo delTorino, battuto dai toscani per 0-2. Il successivo 20 gennaio segna le prime due reti in maglia viola contro la Sampdoria (sua ex squadra), nella gara valida per la 20ª giornata dicampionato.[33] Si sblocca inCoppa Italia nei quarti di finale contro la Roma, segnando il gol del momentaneo 3-1: la partita terminerà 7-1 per i gigliati.[34]
Il 21 giugno 2019, dopo non essere stato riscattato dalla Fiorentina, viene annunciato il suo passaggio a titolo definitivo all'Atalanta per 15 milioni più bonus ed un contratto quinquennale.[35] Il 25 agosto, nel debutto con gli orobici subentrando dalla panchina, è subito decisivo segnando una doppietta che permette alla squadra bergamasca di ribaltare lo svantaggio in casa dellaSPAL, vincendo per 3-2;[36] replica l'exploit il 19 ottobre, in occasione del pareggio in casa dellaLazio (3-3).[37] Nella successiva giornata di campionato ha realizzato una tripletta (la prima per lui in Serie A) nel successo per 7-1 contro l'Udinese.[38] Il 26 novembre 2019 realizza la sua prima rete inChampions League nel successo per 2-0 contro laDinamo Zagabria, che è al contempo il primo successo dei bergamaschi in Champions League.[39] Il 6 gennaio 2020 raggiunge quota 200 presenze in massima serie.[7] Con la doppietta segnata il 28 giugno 2020 contro l'Udinese, sua ex squadra, il colombiano diventa il giocatore che ha segnato più gol (9) da subentrato nella storia della Serie A in una singola stagione.[40] L'8 luglio segna nel successo contro la Sampdoria (2-0) il suo decimo gol da subentrato, diventando il secondo giocatore a riuscirci dal 2000 in poi dopoPaco Alcácer (che ne ha realizzato 12 nel 2018-2019 con la maglia delBorussia Dortmund).[41][42] Tredici giorni dopo raggiunge quota 11 reti da subentrato decidendo la sfida contro ilBologna.[42]
L'anno successivo continua a essere decisivo dalla panchina,[3][43] trovando comunque più spazio dal 1º minuto. Nel mentre è stato decisivo in Champions League nel successo per 0-1 contro l'Ajax che ha consentito agli orobici di raggiungere gli ottavi di finale.[44] Agli ottavi l'Atalanta pesca ilReal Madrid, venendo eliminata nonostante un gol di Muriel su punizione al ritorno in virtù della doppia sconfitta degli orobici sia all'andata che al ritorno.[45] In campionato va a segno nei successi contro Roma (4-1) e Napoli (4-2), oltre a realizzare tre doppiette controCrotone (1-2 per i bergamaschi),[46] Bologna (2-2)[47] e Udinese (3-2 per i bergamaschi).[48]
Il 3 maggio 2023 segna il suo centesimo gol in Serie A nella vittoria contro lo Spezia (3-2).[49]
Dopo 184 presenze e 68 reti in maglia nerazzurra, il 15 febbraio 2024 si trasferisce all'Orlando City, squadra statunitense militante in MLS, con la quale sigla un contratto triennale.[50][51]Il 27 febbraio gioca la prima partita in assoluto da titolare inChampions Cup contro ilCavalry, fornendo l'assist per l'uno a zero aNicolás Lodeiro.[52]
Debutta nellanazionale maggiore il 28 maggio 2012 nell'amichevole non ufficiale contro laGuyana vinta per 7-1 dove mette a segno una doppietta.[54] Fa il suo debutto in una partita ufficiale il 10 giugno seguente contro l'Ecuador, nella partita persa per 1-0.
Viene convocato per laCopa América 2015[55] e fa il suo debutto nella partita di quarti di finale facendosi parare un rigore nella fase finale dell'incontro (ovvero i calci di rigore) da l'allora compagno di squadra alla SampSergio Romero, causando l'uscita della Colombia dalla competizione.[56][57]
Successivamente partecipa anche aiMondiali 2018 e allaCopa América 2019; in quest'ultima competizione ha dovuto abbandonare la squadra dopo la prima partita vinta per 2-0 contro l'Argentina, per infortunio a seguito di un contrasto conLeandro Paredes.[59]
Il 7 settembre 2019 realizza una doppietta nell'amichevole pareggiata per 2-2 contro ilBrasile.[60]