Il est le fils de Hanne Søborg Coster et Jørgen Oscar Fritzer Waldau. Il grandit à Tybjerg entouré par ses deux sœurs plus âgées.
Il apprend le métier d'acteur à l'âge de 19 ans à l’École Nationale de Théâtre du Danemark. Il fait ses débuts sur les planches du théâtre Betty Nansen en interprétant le rôle de Laertes dans Hamlet de William Shakespeare. Après quelques apparitions dans des pièces de théâtre, il commence une carrière à la télévision et joue dans des séries télévisées danoises. En 1994, il joue dans le film Le Veilleur de nuit (Nattevagten) et devient célèbre au Danemark.
En 2001, il est choisi par Ridley Scott pour un petit rôle dans La Chute du faucon noir (Black Hawk Down). Il retrouve le même réalisateur pour Kingdom of Heaven en 2005.
Il joue pour la première fois dans un film français en 2002, 24 heures de la vie d'une femme de Laurent Bouhnik, aux côtés d'Agnès Jaoui. Dans ce film, il interprète le rôle d'Anton, un joueur compulsif.
Il est choisi en 2010 pour interpréter Jaime Lannister, le « régicide », dans la série Game of Thrones, adapté des romans Le Trône de fer de George R. R. Martin.
En 2012, il joue dans le film Mama, film d'horreur hispano-canadien plutôt bien reçu par la critique et, en 2013, il est Marcus, le mari de Juliette Binoche dans L'Épreuve, un drame dans lequel une photographe de guerre est contrainte de choisir entre sa famille et son travail.
Il joue en 2014 aux côtés de Cameron Diaz dans Triple alliance.