Cresciuto nei settori giovanili di GOŠK K. Gomilica e Omladinac Vranjic, nel 2008 transita dalla Dinamo Zagabria[2] prima di tornare a Spalato con i colori dell'Hajduk.[3] Dopo una presenza in campionato con l'Hajduk Spalato nell'estate del 2010, nello stesso calciomercato viene messo sotto contratto dall'Inter che lo trasferisce al Lugano[2][4] con cui, in gare amichevoli, fa qualche apparizione in prima squadra.[5] Il 31 agosto 2011, sempre in prestito,[6] passa alla società italiana del Cesena.[7] Esordisce in Serie A il 16 ottobre, nel pareggio senza gol contro la Fiorentina.[8]
Inter
Nel mercato invernale, fa ritorno all'Inter in cambio della metà del cartellino di Thomas Pedrabissi (che rimane nella Primavera nerazzurra).[9] Con la squadra giovanile vince la NextGen Series e il Campionato di categoria, segnando il primo gol nella finale contro la Lazio (vinta per 3-2).[10][11] L'esordio con i milanesi coincide con quello nelle coppe europee, poiché il 2 agosto 2012 scende in campo contro l'Hajduk Spalato nei preliminari di Europa League.[12] Durante la fase a gironi della competizione mette a segno 4 gol, tra cui la prima doppietta da professionista.[13][14][15]
Atalanta
Nel gennaio 2013 si trasferisce all'Atalanta nell'ambito dell'operazione che porta Schelotto a Milano.[16] Il 24 febbraio realizza la prima doppietta in Serie A, non sufficiente agli orobici per evitare la sconfitta con la Roma (3-2).[17] La prima stagione a Bergamo è segnata da fatti controversi, quali l'esclusione dalle convocazioni e l'aggressione al compagno di squadra Radovanović a cui sferra un pugno durante un allenamento.[18][19]
Con la formazione bergamasca segna, in una stagione e mezzo, 6 gol complessivi,[20] ma l'addio al club è caratterizzato da altri episodi negativi.[21] Dopo una polemica con l'allenatore Colantuono, il croato mostra il dito medio alla tribuna e pubblica un post a sfondo razziale su Facebook insultando gli italiani.[22] Lo stesso giocatore definirà negativo il rapporto con il tecnico.[23]
Rubin Kazan e il prestito all'Empoli
Al termine della stagione 2013-14, viene ceduto al Rubin.[24] Anche l'esperienza in Russia si dimostra poco proficua, a causa di una forma fisica scadente.[25]
Per la stagione 2016-2017 si accorda con gli spagnoli del Las Palmas.[28] Al debutto nella Liga segna una doppietta contro il Valencia, sconfitto per 4-2.[29] La parentesi iberica lo vede ancora protagonista di fatti negativi, chiudendo in anticipo il campionato per la squalifica di 5 giornate comminatagli dopo una spinta all'arbitro, che lo aveva appena espulso.[30]
Nel luglio del 2017 firma invece con i greci dell'AEK Atene,[31] distinguendosi ancora per comportamenti scorretti come il calcio rifilato in pieno petto ad un avversario.[32]
Il ritorno a Spalato
Il 17 febbraio 2021, dopo 11 anni in giro per il mondo,[33] torna nella città natia tra le file dell'Hajduk Spalato, squadra in cui si è formato calcisticamente.[34]
Il 27 febbraio esordisce con i Majstori s mora nel derby dell'adriatico vinto per 1-0 grazie ad un suo assist in favore di Umut Nayir.[35] Il 2 marzo, negli ottavi di finale Coppa di Croazia contro il NK Zagabria, ha segnato su punizione la prima rete in una partita ufficiale con i Bili.[36] Chiude il finale di stagione trascorso in Prva HNL con 6 reti e 7 assist in 15 presenze.[37] Il 9 giugno viene ufficializzato il rinnovo del contratto fino all'estate 2024 e gli viene assegnato il numero 10 precedentemente appartenente a Mijo Caktaš.[38] Il 12 settembre sigla una tripletta nel match terminato 1-3 contro l'Istria 1961.[39]
Il 26 ottobre seguente in occasione dell'ottavo di finale di Coppa di Croazia mette a referto una tripletta e un assist in casa del Belišće (1-5).[40]
Il 5 dicembre realizza una rete ed un assist in occasione del derby eterno vinto 0-2 contro la Dinamo Zagabria.[41]
Il 20 dicembre viene nominato come migliore giocatore della 1.HNL per l'anno solare in corso, diventando così il primo membro dell'Hajduk ad essere insignito con tale premio.[42][43][44]
Il 14 maggio segnando una doppietta nel match di campionato contro l'Istria 1961 (3-1) diventa, con 27 reti messe a referto, il marcatore più prolifico in una singola stagione della storia dell'Hajduk battendo il record lungo 87 anni appartenente a Leo Lemešić (26 reti).[45][46] Una settimana più tardi, nell'ultima giornata di campionato, segna in casa della Dinamo Zagabria (3-1) l'unica rete dei spalatini affermandosi capocannoniere della competizione con 28 reti messe a referto.[47] Il 26 maggio regala un assist a Dario Melnjak nella finale di Coppa di Croazia vinta contro il Rijeka (1-3).[48] Il 14 giugno viene eletto miglior giocatore della stagione appena terminata del campionato croato.[49] Il 14 luglio seguente prolunga il suo contratto con la squadra spalatina fino al 2027.[50] Il 24 maggio 2023 alza la prima Coppa di Croazia con la fascia di capitano al braccio, la seconda consecutiva con i spalatini, grazie alla vittoria in finale contro il Sebenico dove trasforma il rigore per il definitivo 2-0.[51] Quattro giorni dopo, durante l'ultima giornata di campionato con il Sebenico, timbra la sua centesima presenza in assoluto con l'Hajduk e conclude il campionato con 19 marcature all'attivo, ottenendo così il titolo di capocannoniere per il secondo anno consecutivo.[52]
Nazionale
Ha giocato nella nazionale croata nel maggio 2008 con i ragazzi dell'Under-15 (4 presenze e 4 gol). La progressione racchiude sia la selezione Under-16 (6 presenze e 6 gol) sia l'Under-17 (20 presenze e 7 gol) per poi giocare con l'Under-18. Il 10 novembre 2011 esordisce con l'Under-19 nella partita contro i pari età della Finlandia, nella partita conclusasi 4-2 per la formazione croata. L'esordio con l'Under-21 avviene, in amichevole, il 5 febbraio 2013 contro i pari età dell'Olanda.[53] Il 23 marzo dello stesso anno segna il suo primo gol in Under-21 nella partita vinta per 3-0 contro i pari età della Serbia. A giugno 2013 partecipa ai Mondiali Under-20, in Turchia; gioca da titolare nella prima partita del torneo, vinta per 1-0 contro l'Uruguay, venendo sostituito da Kruno Ivančić al 71'. Nella seconda giornata della fase a gironi, giocata contro l'Uzbekistan, al 65' mette a segno il gol del definitivo 1-1: si tratta del suo primo gol assoluto con la maglia dell'Under-20.[54] Dopo essere rimasto in panchina nella terza ed ultima partita della fase a gironi, gioca da titolare nella partita persa per 2-0 contro il Cile negli ottavi di finale, che determina l'eliminazione della sua squadra dalla competizione.
Il 6 settembre 2018 fa il suo debutto nella nazionale maggiore, disputa tutto il primo tempo e parte del secondo tempo nell'amichevole pareggiata 1-1 in casa del Portogallo.[55] Il 1º settembre 2021 torna a vestire in campo la casacca dei Vatreni dopo quasi tre anni dall'ultimo volta, subentra al 74' minuto al posto di Ivan Perišić nella partita pareggiata 0-0 in casa della Russia.[56] Sei giorni dopo, al Poljud di Spalato, realizza la sua prima rete con la selezione croata nel successo per 3-0 contro la Slovenia.[57]
Si ripete l'8 ottobre seguente, questa volta andando a segno nella vittoria esterna contro il Cipro (0-3).[58] Il 26 settembre 2022 mette a segno su assist di Ivan Perišić la rete del momentaneo 1-2 nel match di Nations League, vinto in casa dell'Austria (1-3), e valevole per il passaggio nelle final four.[59]
Il 9 novembre del 2022, viene inserito dal CTZlatko Dalić nella lista dei convocati per i Mondiali di calcio in Qatar.[60] Il 23 novembre fa il suo debutto nella massima competizione per nazionali subentrando al posto di Andrej Kramarić nella partita inaugurale del Gruppo F pareggiata contro il Marocco (0-0).[61] Quattro giorni dopo, alla prima da titolare al Mondiale, segna la rete del momentaneo 2-1 nella vittoria contro il Canada (4-1).[62]
Il 17 dicembre, nella finale per il terzo posto vinta 2-1 contro il Marocco, fornisce l'assist per il gol vittoria di Mislav Oršić.[63]
Il 5 giugno 2023 viene inserito nella lista dei 23 convocati per la fase finale della UEFA Nations League 2022-2023.[64] Il giorno stesso, durante un allenamento a porte aperte della nazionale presso lo Stadio Rujevica, viene preso di mira e insultato da un gruppo di spettatori, inducendolo così a lasciare il giorno seguente il ritiro dei Vatreni e a non prendere parte alla fase finale della competizione.[65][66] L'8 ottobre seguente, nonostante la convocazione in vista delle partite di qualificazione agli Europei 2024 contro Turchia e Galles,[67] annuncia ufficialmente il suo ritiro dalla nazionale.[68]