Ha iniziato la carriera nelle giovanili della Dinamo Zagabria, all'epoca denominata Croazia Zagabria. Trasferitosi in prestito al Samobor nel 1997, nel gennaio 1998 è rientrato nei ranghi della Dinamo. Con la compagine della capitale croata, di cui è stato capitano e con cui ha giocato in UEFA Champions League e in Coppa UEFA, in due anni e mezzo ha vinto due campionati croati, segnando 11 gol in 84 presenze.
Passato al Liverpool per 5,5 milioni di sterline nel 2000, ha esordito in Premier League il 10 dicembre 2000 nella sconfitta per 1-0 contro l'Ipswich Town. Il suo inizio con i Reds è stato molto positivo: il calciatore ha tolto il posto da titolare a Dietmar Hamann nel ruolo di centrocampista difensivo e ha ottenuto 21 presenze in campionato, con un gol segnato il 14 gennaio 2001 contro il Crystal Palace nella vittoria per 5-0. Non ha partecipato alla Coppa UEFA 2000-2001, quindi non può fregiarsi della vittoria del trofeo, ottenuta dai compagni di squadra. Con il Liverpool ha vinto in un quinquenio una Coppa d'Inghilterra, due Coppe di Lega inglesi, una Supercoppa d'Inghilterra, una Supercoppa UEFA e una UEFA Champions League.
Nel 2005 si è trasferito al Panathīnaïkos, club greco. Nel 2007 è tornato alla Dinamo Zagabria, diventandone il capitano fino al suo ritiro, avvenuto nel 2012. Nel secondo periodo alla Dinamo ha vinto cinque campionati croati, due Coppe di Croazia e quattro Supercoppe di Croazia.
Il 6 aprile 2023 lascia la guida della Croazia Under-21 per succedere ad Ante Čačić la panchina della Dinamo Zagabria.[3][4] Il 21 agosto seguente, due giorni dopo l'eliminazione nel terzo turno di UEFA Champions League per mano dell'AEK Atene, viene sollevato dall'incarico.[5][6]
Il 18 ottobre 2023 firma per l'Al-Shabab, club saudita.
Statistiche
Cronologia presenze e reti in nazionale
Cronologia completa delle presenze e delle reti in nazionale ― Croazia