| Year | Title | Role | Notes |
| 1994 | A Breed of Heroes | Lt. Tim Bryant | |
| 1995 | The Vacillations of Poppy Carew | Sean | TV film |
| 1997 | Richard II | Duke of Aumerle | |
| 1997 | Reckless | Danny Glassman | 6 episodes |
| 1997 | Dangerfield | Adam | Episode: "Adam" |
| 1998 | Heat of the Sun | Asst. Supt. James Valentine | 3 episodes |
| 1998 | An Unsuitable Job for a Woman | Philip Hampson | Episode: "A Last Embrace" |
| 1998 | Reckless: The Movie | Danny Glassman | TV film |
| 1999 | Let Them Eat Cake | Advisor | 3 episodes |
| 1999 | Hippies | Alex Picton-Dinch | 6 episodes |
| 2000 | The Wilsons | Colin | 6 episodes |
| 2000 | Hero of the Hour | Danny | TV film |
| 2000 | Smack the Pony | Uncredited | Episode #2.7 |
| 2000–2001 | Clocking Off | Peter Cochrane | 2 episodes |
| 2001 | Sword of Honour | Ian Kilbannock | |
| 2001 | Bei aller Liebe | Peter Cobold | Episode: "Kidnapping Lara" |
| 2001 | Absolutely Fabulous | Taylor | Episode: "Donkey" |
| 2004 | Black Books | Jason Hamilton | Episode: "Travel Writer" |
| 2003–2004 | Keen Eddie | Insp. Monty Pippin | 13 episodes |
| 2005 | The Rotter's Club | Nigel Plumb | 3 episodes |
| 2005 | E=mc² | Antoine Lavoisier | TV film |
| 2004–2006 | Green Wing | 'Mac' Macartney | 18 episodes |
| 2006 | The Secret Policeman's Ball 2006 | 'Mac' Macartney / Rev Green | TV film |
| 2007 | Agatha Christie's Marple | Arthur Calgary | Episode: "Ordeal by Innocence" |
| 2007 | The Shadow in the North | Alistair MacKinnon | TV film |
| 2007 | Oliver Twist | Edward "Monks" Brownlow | Miniseries, 5 episodes |
| 2007 | Seven Ages of Rock | Narrator | |
| 2008 | Uncle Max | Conductor | Episode: "Uncle Max Plays the Piano" |
| 2008 | Merlin | Edwin Muirden | Episode: "A Remedy to Cure All Ills" |
| 2008 | Crooked House | Noakes | Episodes: "Omnibus", "The Wainscoting" |
| 2010 | Rude Britannia | Narrator | |
| 2010 | Inside John Lewis | Narrator | |
| 2010 | The Modern Age of the Coach | Narrator | |
| 2010 | Agatha Christie's Poirot | Michael Garfield | Episode: "Hallowe'en Party" |
| 2010 | Any Human Heart | John Vivian | Miniseries |
| 2011–2012 | The Hour | Angus McCain | 12 episodes |
| 2012 | Gadget Geeks | Narrator | |
| 2012–2014 | A Touch of Cloth | A.C.C. Tom Boss | 6 episodes |
| 2013 | The Lady Vanishes | Mr. Todhunter | TV film |
| 2013 | Wipers Times | Pearson | TV film |
| 2014 | Blandings | Galahad Threepwood | 2 episodes |
| 2014 | Parking Mad | Narrator | |
| 2014, 2024 | Inside No. 9 | Mark / Party Guest | Episodes: "Sardines", "Plodding On" |
| 2015 | Banished | Tommy Barrett | 7 episodes |
| 2015 | The Devil You Know | Minister Samuel Parris | Episode: "Pilot" |
| 2015 | The Bastard Executioner | Lord Pembroke | Episode: "The Bernadette Maneuver/Cynllwyn Bernadette" |
| 2016 | Drunk History | Oscar Slater | Episode: "Battle of Waterloo/Arthur Conan Doyle" |
| 2016 | Hoff the Record | Bunny Vasilis | Episode: "Finance" |
| 2017 | SS-GB | Bernard Staines | 2 episodes |
| 2017–2021 | Britannia | Prince Phelan | 24 episodes |
| 2018 | Silent Witness | David Cannon | Episode: "Moment of Surrender" |
| 2018–2019 | Harlots | Marquess of Blayne | 14 episodes |
| 2019 | The Witcher | Giltine | Episode: "Betrayer Moon" |
| 2022 | Man vs. Bee | Christian Kolstad-Bergenbatten | 4 episodes |
| 2022 | The Larkins | Mr Jerebohm | 6 episodes |
| 2023 | Tom Jones | Fitzpatrick | 3 episodes |
| 2023 | Extraordinary | Charles II | Episode: "The Merry Monarch" |
| 2023 | The Reckoning | Johnnie Stewart | 2 episodes |
| 2024 | Sexy Beast | Stephen Eaton | 4 episodes |
| 2025 | Washington Black | Erasmus Wilde | Post-production |
| Year | Title | Role |
| 1996 | People Like Us | Police Detective |
| 1999 | BBC Radio 4 Classic Serial:Sketches by Boz | Cymon Tuggs |
| 2000 | Arrested Development | Andy |
| 2002 | BBC Radio 4 Drama: Magnolia Blossom | Vincent |
| 2003 | BBC Radio 4 Drama: Friday's Child | Ferdy Fakenham |
| 2007–2009 | The Maltby Collection | Rod Millet |
| 2008 | Number 10 | Steve McKie |
| 2009 | Sapper Bulldog Drummond | Narrator |
| 2012 | Bird Island | Graham |
| 2012 | Welcome to Our Village, Please Invade Carefully | Field Commander Uljabaan |
| 2012 | Alice through the Looking Glass | Lewis Carroll |
| 2013 | BBC Radio 4 Book of the Week: The Norfolk Mystery | Narrator |
| 2013 | BBC Radio 4 Afternoon Drama: The Gestapo Minutes | Michael Oppenheim |
| 2013 | BBC Radio 4 Classic Serial:Three Men in a Boat | Narrator and character "J" |
| 2015 | BBC Radio 4 Book of the Week: Birth of a Theorem | Narrator |
| 2015 | BBC Radio 4 Book of the Week: The Inheritor's Powder: A Cautionary Tale of Poison, Betrayal and Greed | Narrator |
| 2015 | BBC Radio 4 Extra: The Corrections Omnibus | Chip Lambert |
| 2015 | BBC Radio 4 Drama: The Norman Conquests | Norman |
| 2016 | BBC Radio 4 Drama: Rumpole | Young Rumpole |
| 2021 | BBC Radio 4 Drama Series: The Archers | Trevor Fry |
| 2025 | BBC Radio 4 Drama: Acqua Alta | Commissario Guido Brunetti |