Swoją pierwszą główną rolę otrzymał w komedii romantycznej Casanova (2005), gdzie zagrał brata Sienny Miller. Ponadto można go było zobaczyć na małym ekranie, wystąpił bowiem w brytyjskim dramacie kryminalnym Inspektor Lewis (Lewis, 2006). Powrócił na kinowy ekran w dreszczowcu fantastycznonaukowym BBC Jak dla Andromedy (A for Andromeda, 2006).

Przełom w karierze przyniosła mu rola Tristana Thorna w amerykańsko-brytyjskiej produkcji Gwiezdny pył (Stardust, 2007) u boku Michelle Pfeiffer, Roberta De Niro oraz Claire Danes.

Filmografia Filmy Kropka nad i (Dot the i) (2003) jako Theo Things To Do Before You're 30 (2004) jako Danny Kupiec wenecki (2004) jako Lorenzo Tis Pity She's A Whore (2005) jako Giovanni Casanova (2005) jako Giovanni Bruni Lewis (2006) jako Danny Griffon Tyrant Biały (Tirante el Blanco, 2006) jako Diafebus A For Andromeda (2006) jako Dennis Bridger Gwiezdny pył (2007) jako Tristian Thorn Stone of Destiny (2008) jako Ian Hamilton Gdy budzą się demony (2011) jako Josemaría Teoria wszystkiego (The Theory of Everything, 2014) jako Jonathan Jones Eat Locals (2017) jako Henry Król złodziei (King of Thieves, 2018) jako Basil Spider-Man: Bez drogi do domu (Spider-Man: No Way Home, 2021) jako Matt Murdock