Harris was born in Hammersmith, London, one of three sons of the Irish actor Richard Harris and his first wife, Welsh actress Elizabeth Rees-Williams. His younger brother is actor Jamie Harris, his older brother is director Damian Harris, and his maternal grandfather was politician David Rees-Williams, 1st Baron Ogmore.
Harris began his film career as director of named Darkmoor (1983), an unfinished feature-length film for Duke University's Freewater Films. His first film appearance as an actor was in The Rachel Papers (1989). He played the role of the aged Will Robinson in the movie adaptation of the television series Lost in Space. Harris played Dr. Charles Ashford in Resident Evil: Apocalypse, Benmont Tench in Jim Jarmusch's Dead Man, and Kenneth Branagh's character's doppelgänger in How to Kill Your Neighbor's Dog.
Other notable roles include King Henry VIII in the 2003 film adaptation of the novel The Other Boleyn Girl. He also portrayed Andy Warhol in I Shot Andy Warhol and John Lennon in the television movie Two of Us (2000). He played Vladimir in the black comedy drama film Happiness (1998), written and directed by Todd Solondz. He played the gruff Captain Anderson in the BBC2 adaptation of To the Ends of the Earth; Mac McGrath in the movie Mr. Deeds; Eamon Quinn on the FX series The Riches; and David Robert Jones on Fringe. One of his more recent film roles was Ulysses S. Grant in the Steven Spielberg-directed Lincoln. He played Lane Pryce in Mad Men from 2009 until 2012 and returned to the series to direct the 11th episode of season 7, which aired in 2015. He also portrayed King George VI in the first season of The Crown.