Obtuvo fama como Tristan Thorn en la película Stardust. Más adelante interpretó a Owen Sleater en Boardwalk Empire y a Ishmael en Moby Dick. En el 2015, obtuvo el papel del personaje titular en la serie de Netflix Daredevil.
Recibió su entrenamiento actoral en la Escuela Sherborne en Dorset.
Apareció en Stone of Destiny como Ian Hamilton.
Vivió con su hermano y su perro Dickon por muchos años. En octubre del 2016, él y su novia Samantha Thomas recibieron a su primera hija.
Tuvo un papel recurrente en la serie de HBO Boardwalk Empire, donde actuó Steve Buscemi.