McTavish was born in Glasgow, Scotland. He played the character Warden Ackerman in Red Dwarf in five episodes of series 8. McTavish has also had many supporting roles in British dramas and films such as Casualty, Jekyll, The Bill, Taggart and Sisterhood. He also played the ill-tempered Mercenary Commander Lewis in Rambo, had a role as Desmond's drill sergeant in the fourth season of Lost, starred in Ali G Indahouse as a Customs Officer and played a Russian pirate in NCIS. He played Ferguson in 4 episodes of season 4 of Prison Break. He has also starred in the film Green Street 2 which was released on 23 March 2009. McTavish provided the voice and motion capture work for the evil psychopath 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.
Most recently, McTavish appeared in the 2011 film The Wicker Tree, Robin Hardy's sequel to his 1973 film, The Wicker Man. He plays Dwalin in the The Hobbit films.
In September 2013, it was announced that McTavish had been cast as Dougal Mackenzie in the upcoming television series Outlander for the American television channel Starz. The series is an adaption of the bestselling novels by author Diana Gabaldon. The series premiered on 9 August 2014 to rave reviews from critics and audiences alike.