Milieu de terrain croate, il a été le capitaine du club Séville FC de 2013 à 2014, puis il a rejoint le FC Barcelone. De 2007 à 2011, il a joué pour le Schalke 04 et il a intégré l'Équipe de Croatie en 2007.
Il a fait ses débuts professionnels pour le FC Bâle en 2005.
Il est né dans la commune de Möhlin, en Suisse, de parents croates. Sa décision de représenter la Croatie à l'international plutôt que la Suisse a suscité la controverse.
Il a épousé Raquel Mauri en avril 2013, et il est devenu père d'une fille nommée Althea, en juillet 2013. Sa seconde fille, Adara, est née en 2016.
Il est devenu le coéquipier de Darijo Srna en 2007, en rejoignant l'Équipe de Croatie.