Célèbre pour son rôle de Tristan Thorn dans le film "Stardust, le mystère de l'étoile", il a plus tard incarné Owen Slater dans la série "Boardwalk Empire" et Ishmael dans "Moby Dick". En 2015, il a décroché le rôle titre dans la série Netflix "Daredevil".
Il a étudié la comédie à la Sherborne School à Dorset.
Il a incarné Ian Hamilton dans "Stone of Destiny".
Il a vécu avec son frère et son chien Dixkon pendant de nombreuses années. En octobre 2016, sa femme Samantha Thomas et lui ont eu leur premier enfant, une fille. Le couple s'est marié en septembre 2018. Ils ont accueilli leur second enfant en mars 2020.
Il a eu un rôle récurrent dans la série de HBO "Boardwalk Empire", aux côtés de Steve Buscemi.