Latem 2005 roku Tadić trafił do niemieckiego Bayeru 04 Leverkusen za sumę 350 tysięcy euro. W zespole „Aptekarzy” nie miał większych szans na grę w ataku, gdyż w pierwszej linii grali m.in. Dimityr Berbatow czy Andrij Woronin. W sezonie 2005/2006 zagrał tylko raz – 17 grudnia w zremisowanym 0:0 meczu z Hannoverem, kiedy w 85. minucie zmienił Tranquillo Barnettę. Większą część rozgrywek spędził w rezerwach klubu, grających w Regionallidze Północnej. W sezonie 2006/2007 Tadić także nie mógł przebić się do pierwszego składu. Rundę jesienną spędził w II drużynie Bayeru, a zimą 2007 roku wrócił do Chorwacji i zasilił szeregi Dinama Zagrzeb, które zapłaciło za niego ok. 0,5 miliona euro. Zaczął regularnie grać w podstawowym składzie i w latach 2007–2008 wywalczał z zespołem mistrzostwo Chorwacji.
4 lipca 2009 roku Tadić parafował 4-letni kontrakt z Grenoble Foot 38, w którym rozegrał 19 spotkań w Ligue 1. Od 31 sierpnia 2011 roku, przez jeden sezon, reprezentował Lechię GdańskLechia Gdańsk - Josip Tadić w Gdańsku. W lipcu 2012 roku podpisał umowę z Melbourne Heart. Następnie grał w HNK Rijeka i NK Zadar. W 2014 przeszedł do Sturmu Graz. W 2016 przeszedł do Balıkesirsporu.