He has played the character Warden Ackerman in five episodes of the 8th series of Red Dwarf. McTavish has also had many supporting roles in British dramas and films such as Rome, Casualty, Jekyll (starring James Nesbitt), The Bill, Taggart, and Sisterhood.

McTavish and Ken Stott (who plays McTavish's character's brother, Balin) both appeared in the 2004 historical action film King Arthur.

McTavish provided the voice and motion capture work for the evil psychopathic war criminal Zoran Lazarevic in Uncharted 2: Among Thieves, the voice of the main protagonist Dante Alighieri in Dante's Inferno, Restoration leader Commander Lucius in the Shadow Complex video game, and the Decepticon Thundercracker in Transformers: War for Cybertron. He played Russian Foreign Minister Mikhail Novakovich in the eighth season of 24, and did voice work as the Marvel Comics villain Loki in Hulk Vs. Thor and The Avengers: Earth's Mightiest Heroes. In 2011, McTavish also provided the voices of antagonist Joseph Bertrand III in Infamous 2 and newcomer Charlie Cutter in Uncharted 3: Drake's Deception.

In 2003, he participated on a series of documentaries based on Tolkien's work, called Secrets of Middle-Earth: Inside Tolkien's Lord of the Rings.