MacDonald started his career with St Johnstone but was snapped up by Rangers in November 1968 for £50,000. When he arrived for the signing ceremony he was wearing a casual shirt. He was quickly reminded he was now a Rangers player and such standards were unaccaptable. He quickly became a fans favourite at Ibrox as he demonstrated his passion for the blue jersey. He was instrumental in Rangers 1972 Cup Winners Cup triumph scoring against Rennes in the First Round. During his time at Rangers he played 503 games and scored 94 times and won 3 League Championship, 4 Scottish Cup and 4 League Cup medals. MacDonald joined Hearts for £30,000 in 1980.
MacDonald became player/manager at Tynecastle in 1981. He took Hearts to within seven minutes of winning the Scottish Premier League title in 1985–86. One week later his team lost the Scottish Cup Final 3–0 to Aberdeen. He became joint manager alongside Sandy Jardine in 1986, although this was a short lived arrangement. Hearts Chairman Wallace Mercer sacked MacDonald in the summer of 1990.
MacDonald later found success with Airdrieonians. He took over the newly promoted team from Jimmy Bone in May 1991, and guided them to two Scottish Cup finals and into Europe. In the 1992–93 season he led them into the European Cup Winners Cup as a result of being runners-up to Rangers in the Scottish Cup final during the previous season. The club's last appearance in the final was in 1994–95, when they lost 1–0 to Tommy Burns' Celtic. League success was harder to come by, however, and the team were relegated to the First Division in 1993. Unable to provide a return to top-league football, he was sacked by Airdrie on 13 March 1999 and has chosen not to work in management since.