Giocatore versatile che può ricoprire vari ruoli, viene impiegato principalmente comeala sinistra ma può essere adoperato anche comeala destra,punta centrale otrequartista. Le sue abilità di opportunismo lo rendono un ottimo finalizzatore dalla media distanza, è un attaccante dotato di dinamismo che vanta un ottimo senso della posizione, inoltre dispone di una buona potenza di tiro. È mancino, è capace di segnare calciando supunizione ma è anche estremamente affidabile con irigori: nella sua carriera ne ha messi a segno 85.
Tadić gioca fino all'età di 14 anni con la squadra dell'AIK Bačka Topola, squadra serba della sua città natale. Nel2002 passa nelle squadre giovanili delVojvodina, dato che si era trasferito proprio aNovi Sad con la sua famiglia. Dopo tre anni viene mandato in prestito alPodmladak. Nel2006 torna al Vojvodina collezionando 43 presenze e 6 reti in due stagioni.
Dopo due stagioni alGroningen nell'estate2012 passa alTwente per 7,7 milioni di euro.[3] Alla prima giornata di campionato, il 12 agosto, segna una doppietta nella vittoria per 4-1 contro la sua ex squadra. Conclude la sua prima stagione al Twente con 36 presenze e 13 gol considerando anche i play-off per l'Europa League. La sua seconda stagione è ugualmente positiva, visto che raccoglie ben 34 presenze condite da 16 reti.
L'8 luglio2014 passa alSouthampton a titolo definitivo.[4] Il 17 agosto 2014 fa il suo esordio ufficiale con la maglia deiSaints, nella partita persa 2-1 sul campo delLiverpool.[5] Il 23 settembre segna la sua prima rete ufficiale, nella vittoria esterna 2-1 sul campo dell'Arsenal, match valevole per laCapital One Cup.[6]
Il 27 giugno 2018 è ufficializzato il suo passaggio all'Ajax, con cui firma un contratto di 4 anni. Pagato 13 milioni di euro più 7 milioni di bonus, rappresenta l'acquisto più oneroso della storia del club olandese.[7] In occasione del primo match diUEFA Champions League contro l'AEK Atene indossa anche la fascia dacapitano a causa dell'assenza diMatthijs de Ligt. È uno dei protagonisti della grande stagione dell’Ajax che arriva fino alla semifinale diUEFA Champions League e vinceCoppa d'Olanda ecampionato, risultando determinante per la vittoria di quest'ultimo trofeo con 28 gol (capocannoniere a pari merito conLuuk de Jong del PSV) e 13 assist. In tutto segna 38 gol e fornisce 23 assist in 56 partite.
L'8 luglio 2019 è ufficializzato il prolungamento del suo contratto con i lancieri. Con la cessione diMatthijs de Ligt, la fascia da capitano della squadra passa a Tadic, che il 27 luglio vince il suo primo trofeo stagionale, laSupercoppa d'Olanda vinta contro ilPSV. Il 14 settembre seguente, andando in gol contro l'Heerenveen nella partita vinta per 4-1 in casa, sigla un record personale, realizzando almeno una rete in 12 partite casalinghe consecutive diEredivisie, fatto senza precedenti nella storia del club. A dicembre riceve in patria il premio Golden Ball 2019. Diventato quindi un uomo chiave nella rosa allenata daErik ten Hag, al marzo 2021 con 11 gol e altrettanti assist nelle competizioni europee (esclusi i preliminari) come rendimento si piazza dietro a giocatori del calibro diRobert Lewandowski,Kylian Mbappè,Lionel Messi eBruno Fernandes. Il 2 maggio vince la sua prima Eredivisie da capitano, venendo poi premiato come giocatore dell’anno dell’Ajax; in questa stagione ha collezionato 22 gol e 26 assist in 51 incontri. Due mesi più tardi prolunga di un anno il proprio contratto che sarebbe scaduto nel 2023.[8] In questo anno solare fornisce 37 assist, battendo il record storico di 36 appartenente a Lionel Messi e risalente al 2011.[9] In occasione di Ajax-Zwolle del 30 aprile 2022 gioca la centoventiquattresima partita di fila, battendo il precedente record diGert Bals, che negli anni sessanta aveva giocato 123 gare consecutive con la maglia dell’Ajax.[10]
Il 14 luglio 2023 rescinde il proprio contratto con ilancieri a seguito di divergenze di vedute con il club.[11][12]
Debutta con lanazionale maggiore il 14 dicembre 2008, durante l'amichevole contro laPolonia, partita vinta dai polacchi per 1-0. Il 6 febbraio 2013 segna la sua prima rete in nazionale, controCipro, nella partita amichevole finita 3-1 per laSerbia.[14]
Il 10 settembre 2023 raggiunge quota 100 presenze con la selezione serba nel successo per 1-3 in casa dellaLituania.[15]
Il 21 marzo 2024 aggancia il recordman di presenzeBranislav Ivanović (105) nell'amichevole persa 4-0 contro laRussia.[16][17] Quattro giorni dopo lo supera nell'amichevole vinta 0-1 in casa diCipro.[18][19]