W brytyjskim dreszczowcu szpiegowskim Casino Royale (2006), należącym do serii o przygodach Jamesa Bonda, wcielił się w postać Villiersa, młodego asystenta M (Judi Dench) w kwaterze głównej MI6.
Grał na scenie w takich sztukach jak komedia Williama Congreve’a Światowe sposoby, The History Boys, Hamlet i Wiśniowy sad. W 2003 był nominowany do Ian Charleson Award za rolę w sztuce Trzy siostry, wystawianej w Playhouse Theatre.
Wystąpił w podwójnej roli Franka Randalla i Jonathana „Czarnego Jacka” Randalla w serialu historycznym Starz Outlander (2014–2018), który przyniósł mu nominację do Złotego Globu, a także jako Marek Juniusz Brutus w serialu BBC i HBO Rzym (2005–2007) oraz jako Edmure Tully w serialu HBO Grze o tron (2013, 2016, 2019). Wcielił się w postać Filipa, księcia Edynburga w trzecim i czwartym sezonie serialu Netflix The Crown (2019–2020).
Filmografia 1998: Na sygnale 2000: Długość geograficzna 2002: I Saw You 2004: Marzyciel 2005: Pierrepoint: Ostatni kat 2005: Rzym 2006: Casino Royale 2007: Persuasion 2009: Anton Chekov's The Duel 2009: Tajniacy (serial) 2010: Jackboots on Whitehall 2013: Gra o tron 2014: Morze Czarne 2014: Outlander