His early TV appearances include roles in Play for Today (Hell's Angels by David Agnew, 1971), Thriller, The Brontes of Haworth, 1973, in which he played Branwell Bronte), Tales of the Unexpected and Beasts. He played the role of Martin in the original 1976 production of Dennis Potter's Brimstone and Treacle, Peter in Stephen Poliakoff's Caught on a Train, Edmund in the BBC Television Shakespeare production of King Lear, the Antipholi in the same series' production of The Comedy of Errors, Private Bamforth in the 1979 BBC television play of The Long and the Short and the Tall, Larner in the film Breaking Glass (1980), Rochus Misch in The Bunker (1981), Berkeley Cole in the film Out of Africa (1985), the King of the United Kingdom in To Play the King (1993), an English land agent during the Irish Famine in The Hanging Gale (1995), and a recurring role as Bill Tanner in the Pierce Brosnan Bond films GoldenEye (1995) and The World Is Not Enough (1999).