Firth was born in Bradford, West Riding of Yorkshire, England, the son of publicans Mavis (née Hudson) and Eric Macintosh Firth. He attended Hanson School in Bradford.
He was a leading child actor by the middle of 1970, having starred in the first series of The Flaxton Boys as Archie Weekes and in the series Here Come the Double Deckers, which featured child actors in the leading roles. Firth played Scooper, the leader of the gang.
In July 1973 Firth appeared at Laurence Olivier's National Theatre, starring in the stage version of Peter Shaffer's play Equus as a teenager being treated by a psychiatrist, and in October 1974 repeated the role in the Broadway production, receiving a Tony Award nomination for his performance as Alan Strang.
His first major role as an adult was the title part in a BBC Television Play of the Month adaptation of Oscar Wilde's novel The Picture of Dorian Gray (1976). The script was based on a stage adaptation by John Osborne, and also starred Jeremy Brett and John Gielgud. That same year saw the release of the World War I film Aces High which featured Firth as the inexperienced RFC pilot Lt. Stephen Croft.
Firth played the lead role in the unsuccessful film adaptation of Henry Fielding's Joseph Andrews (1977). That same year he starred with Richard Burton in the film adaptation of Equus. The film was only a moderate box-office success, but earned Firth a nomination for the Academy Award for Best Supporting Actor and a Golden Globe award in the same category. Further film work quickly followed, most notably Roman Polanski's Tess (1979).
In May 1981 he appeared on Broadway again in Peter Shaffer's Amadeus as Wolfgang Amadeus Mozart, replacing Tim Curry. Shaffer had offered him the role in the original London production, but he was unavailable due to film commitments.
Other film work has included roles in Diamonds on Wheels (1973); When You Comin' Back, Red Ryder? (1979); Lifeforce (1985); Letter to Brezhnev (1985); Northanger Abbey (1986), playing Henry Tilney; The Hunt for Red October (1990); White Angel (1993), playing mild-mannered dentist Leslie Steckler; Amistad (1997); Mighty Joe Young (1998); Pearl Harbor (2001); and The Greatest Game Ever Played (2005), playing Lord Northcliffe.
Along with his film career, Firth has continued to appear in various television productions, with several notable credits in various high-profile dramas. He starred in two science-fiction episodes of the BBC's Play for Today anthology series as the eponymous time-traveller in the romantic The Flipside of Dominick Hide (1980), and its sequel, Another Flip for Dominick (1982). In 1994, in the Fourth Series of Heartbeat, he played Dr. Radcliffe who partnered with Dr. Rowan (Niamh Cusack) in Whitby. He also portrayed the Emperor Vespasian in "The Jewish Revolt" episode of the BBC series Rome: The Rise and Fall of an Empire.
For many years he had played a primary role as senior MI5 officer Harry Pearce in the BBC's popular spy drama series Spooks (2002–2011), and played Fred Hoyle in Hawking, a BBC dramatisation of the early career of Stephen Hawking. He was also Snaith in the three-part series South Riding in 2011. Firth has also appeared on American and Canadian television, on programmes such as Law & Order: Special Victims Unit and Total Recall 2070, as well as in television films such as The Incident starring Walter Matthau.
In 2014 Firth played the part of the character Adrian Rawlins in Undeniable, a two-part series made for the ITV network. In 2015 he played Jacob Marley in four episodes of the BBC television series Dickensian.
In 2016 Firth played the part of Ernest Augustus, Duke of Cumberland and King of Hanover in ITV's drama series Victoria.
Firth is also a narrator of audiobooks. He has been responsible for performances reading Pat Barker's Regeneration, The Ghost Road and The Eye in the Door, Suspicion by Robert McCrum, Maurice by E. M. Forster, Brave New World by Aldous Huxley, Sebastian Faulks' Birdsong and Thomas Hardy's Tess of the d'Urbervilles.
Firth has been married twice and has four children; Rory Firth, from his first marriage, Amy, Alex and James Firth from his second.
He briefly dated Alexandra Pigg after they played a couple in Letter to Brezhnev. During an interview for BBC Breakfast in April 2017 they explained that they met again in 2010 and have been in a relationship since then.
On 17 July 2009 he was awarded an honorary degree by the University of Bradford as a Doctor of Letters for his services to acting, having been nominated by the School of Computing, Informatics & Media; he received his award during the school's degree ceremony.