| Year | Title | Role | Ref. |
| 1976 | I, Claudius | Castor | |
| Survivors ("Parasites") | Jeff Kane | |
| 1977 | The Duchess of Duke Street ("A Lesson in Manners") | Tom Prince | |
| Poldark | Drake Carne | |
| Crown Court ("Street Gang") | Paul Adams | |
| 1978 | The Devil's Crown | Henry the Young King | |
| 1981 | Masada | Norbanus | |
| 1982 | Praying Mantis | Bernard | |
| 1984 | Diana | Jan | |
| Doctor Who | Lieutenant Hugo Lang | Serial: The Twin Dilemma |
| 1987 | Casualty | Tom Bennod | |
| 1988 | The Contract | Johnny Donahue | |
| 1989 | Hard Cases | Richard Pearce | |
| 1991 | Bottom ("Smells") | Sex shop owner | |
| 1992 | The Common Pursuit | Stuart Thorne | |
| 1993 | Full Stretch | Baz Levick | |
| 1995 | A Bit of Fry & Laurie | Himself/Various | |
| Ghosts | Craig Byatt | |
| 1997 | Underworld | Mr Jezzard | |
| 1997–1999 | Dad | Alan Hook | |
| 1999 | Rab C. Nesbitt ("Commons") | MP Tony Welthorpe | |
| Midsomer Murders ("Blood Will Out") | Orville Tudway | |
| 2000 | The Young Indiana Jones Chronicles | Walter Burton Harris | |
| 2002 | Shackleton | Captain Frank Worsley | |
| Spooks | Robert Osborne | |
| Bedtime | Simon | |
| 2005 | Bloodlines | James Hopkin | |
| 2007 | Life on Mars | Supt. Harry Woolf | |
| The Minister of Divine | Wesley | |
| The Murder of Princess Diana | Charles Davis | |
| 2009 | Demons | Mr Tibbs | |
| Margaret | Kenneth Clarke | |
| Wuthering Heights | Mr Earnshaw | |
| Law & Order: UK | Harry Morgan | |
| 2010 | New Tricks ("Left Field") | Fred Blackledge | |
| Agatha Christie's Marple ("The Blue Geranium") | Inspector Sumerset | |
| Midsomer Murders ("The Noble Art") | Gerald Farquaharson | |
| 2011 | CSI: Crime Scene Investigation ("Freaks & Geeks") | Major Willie | |
| 2011–2012 | Supernatural (3 episodes) | Frank Devereaux | |
| Downton Abbey | Horace Bryant | |
| 2012 | Burn Notice ("Odd Man Out") | James Vanek | |
| 2013 | The Challenger Disaster | Lawrence Mulloy | |
| The Mill | Mr. Timperley | |
| Starship Goldfish | Ghostworth | |
| 2014–2017 | Turn: Washington's Spies | Richard Woodhull | |
| 2014 | 24: Live Another Day ("Day 9: 10:00PM – 11:00AM") | Russian agent | |
| 2015 | Count Arthur Strong | Ernest | |
| 2016 | Lost Sitcoms: Hancock's Half Hour | Tony Hancock | |
| Designated Survivor | Harris Cochrane | |