Born in Fulham, London, he attended the same school as former Genesis and GTR guitarist Steve Hackett. Macdonald started his career as a full back before switching to centre forward. After playing for non-league side Tonbridge Angels, Bobby Robson paid £1,000 to sign him for Fulham in 1968 just after their relegation from the Football League First Division.
A year later he moved to Luton Town. At Luton he scored 58 times in 101 matches.
Newcastle United manager Joe Harvey signed him for £180,000 in the summer of 1971. He made an immediate impact in scoring a hat-trick on his home debut against Liverpool. It was in this game that Macdonald earned the nickname Supermac which came from a chant by the Newcastle fans to the tune of Jesus Christ Superstar, being "Supermac, superstar, how many goals have you scored so far?".
In his first season Newcastle were bottom of the table on 30 October 1971 after Everton handed them their fifth consecutive defeat of the season. The Everton defeat was also the Newcastle debut of Tony Green. With Green Newcastle then prospered with an unbeaten run of 5 wins and 2 draws to start pulling themselves up the table. They finished the league eleventh with Macdonald scoring 30 goals in 52 games in his first season to be Newcastle's top scorer in 1972. He top scored again in 1973, 1974, 1975 & 1976. He also won the First Division's golden boot for that 1975-76 season as well.