Depois de mais uma temporada de sucesso noMarsonia, mudou-se para oNK Zagreb, onde marcou 21 gols em 28 partidas e ajudou sua equipe a ganhar oCampeonato Croata. Na temporada seguinte foi para oDínamo Zagreb, onde marcou 16 gols em 27 jogos, e se tornou o melhor atacante daLiga Croata.
Em janeiro de 2007, mudou-se para oHamburgo, estreou naBundesliga contra oEnergie Cottbus, em 31 de janeiro. Olić foi contratado porque oHamburgo estava em apuros, terminando na zona de rebaixamento antes da pausa de Inverno. Sua contratação teve resultado positivo, pois o clube terminou em sétimo e até venceu aCopa Intertoto. Ele marcou dois gols no último jogo da temporada contra oAlemannia Aachen na vitória por 4–0. Em outubro de 2007, Olić anotou um hat-trick na partida contra oStuttgart, a partida acabou 4 a 1 para sua equipe.
Em 3 de janeiro de 2009, Olić assinou um contrato de três anos com oBayern de Munique . Ele se juntou ao clube numa transferência livre em 1º de julho de 2009. Inicialmente, ele chegaria para ser reserva deMiroslav Klose eMario Gómez, mas devido a lesões, começou a ser titular. No dia 8 de agosto, em sua estreia noBayern, marcou o primeiro gol contra oHoffenheim, em um empate por 1–1 e logo se tornou um dos jogadores favoritos da torcida do clube. Ganhou destaque novamente ao marcar um gol decisivo nos acréscimos da partida contra oManchester United pela ida das quartas-de-finais daLiga dos Campeões 2009-10, a partir daí a torcida bávara lhe colocou o apelido de 'Guerreiro Croata', devido a sua entrega e raça dentro de campo. Olić porém errou um pênalti decisivo na final daLiga dos Campeões 2011-12 que acabaria dando o título ao Chelsea. Olić já havia confirmado sua ida ao Wolfsburg naquele momento.
Em 27 de Julho de 2016, após rescindir seu contrato com oHamburgo, acertou sua transferência para oMunique 1860. Clube que disputa a Segunda divisão alemã.