MacPherson was raised in South Lanarkshire. He left Hamilton Grammar School at 17 and got a job as a laboratory technician at the Institute of Neurosciences at the Southern General Hospital in Glasgow. Part of his job was to collect brain samples for experimentation. MacPherson worked in the lab for five years and met his future wife Jacqueline while he was there. MacPherson went for an interview to be a police officer, but soon realised that he did not have the requisite personality for the job. It was then that his thoughts turned to acting. He joined an amateur dramatic group in Motherwell, before moving on to a repertory theatre in East Kilbride and a place in drama school. It was after MacPherson landed the part of Hugh Hamilton in Citizens on BBC Radio 4 that his television career began to take off. While he was based in London MacPherson auditioned for a part in the children's series Dramarama, but was unsuccessful. Then, in 1986, his agent told him about a part that had come up in Taggart and, after he regained his Glasgow accent, which had been diluted by working in London, he was offered the part.
Initially the character of Jardine was to be a foil to DS Livingstone, assistant to DCI Jim Taggart, but when Neil Duncan left the show shortly after MacPherson joined it Jardine became Jim Taggart's permanent right-hand man. He then became the central character following McManus's death in 1994. McManus was godfather to MacPherson's daughter Katie. 2002 saw MacPherson's last appearance as DCI Michael Jardine. MacPherson was forced to leave the show due to ill health. He had a collapsed lung and underwent life-saving surgery, which resulted in the lung being stapled to the inside of his chest. This prevented him from doing many of the activities that acting as Jardine required. MacPherson's final episode, "Death Trap", was aired on 14 January 2002. Since Taggart MacPherson has concentrated on the theatre. Much of his early stage work saw him cast as a policeman. He appeared as Jardine in all but name in a TV documentary investigating claims that Scottish MPs were bribed to pass the Acts of Union of 1707. He also guest-starred in several episodes of The Bill as a former officer whose sister was raped by other policemen. He provided the voice for Ian Rankin's Inspector Rebus in the talking book series. In 2000 MacPherson appeared in a Channel 4 Schools History series The Scots Detective, playing DI Scott. In July 2002 he set up an acting company with the Scots actress Emma Currie called Acting Up. In October 2003 MacPherson formed a rock and roll band called The Cams with ex-Wet Wet Wet drummer Tommy Cunningham, and was seen singing with the band on Children in Need on BBC One Scotland the following month. Christmas 2003 saw MacPherson appear as Abananzar in Aladdin at His Majesty's Theatre in Aberdeen. In 2007 he starred in the stage version of Dial M for Murder with Faye Tozer of Steps. In May 2010 MacPherson co-starred as Martin Schulse in the Tron Theatre's production of Address Unknown adapted from the short story by Kathrine Kressmann Taylor. In 2014, amidst widespread speculation, it was confirmed that MacPherson narrated Sir Alex Ferguson's autobiography. MacPherson has three children with his wife.