Fagan started his professional career as a teenager at Celtic, joining the club from Wellesley Juniors, the same route taken by his uncle John McFarlane 16 years earlier. He made his debut aged barely 18 in March 1935, and appeared five times for the Hoops as they won the 1935–36 Scottish Division One title; however, it was his six goals in as many matches at the start of the 1936–37 season which drew attention from other clubs.
Liverpool manager George Kay then took Fagan to Liverpool where he made his debut, along with John Shafto, on 23 October 1937 in a 1–1 league draw with Leicester at Anfield. He scored his first Liverpool goal a week later on 30 October in a 3–2 league win over Sunderland at Roker Park. While playing for the Reds, Fagan went straight into the line-up in his favoured inside-left position, although he did appear as a centre-forward; he ended his initial season at the club with nine goals in 36 matches. He followed this up by scoring 15 times, one behind top scorer Berry Nieuwenhuys and missing only just three matches of the 1938–39 campaign. The Second World War interrupted Fagan's career for six years and it took away the majority of his best years. He played as a wartime guest for Celtic, Aldershot, Leicester, Northampton, Newcastle, Chelsea, Millwall and Reading. Fagan returned to Merseyside upon the conclusion of the war and was appointed captain. He played 22 matches, scoring seven goals as Liverpool won the first post-war First Division championship by the end of the 1946–47 season. Injuries caused his appearances during the 1947–48 and 1948–49 seasons to be very irregular, and he also lost the captaincy and appeare dto be on the verge of departing. He bounced back in the 1949–50 season as he helped the Reds to their very first Wembleycup final on 29 April 1950. Fagan made 42 appearances in that campaign, seven in the FA Cup, scoring 11 goals, four of them in the cup run. Arsenal won the final 2–0 in front of a 100,000 crowd, the second time he had been on the losing side in a cup final. Fagan made just four appearances during the following campaign and three during the first half of the 1951–52 season. He was allowed to leave Liverpool in January 1952.
Later football career
Fagan joined Northern Irish club Belfast Distillery where he played for a short time. He then headed back to England where in took on a player/manager role at Weymouth.
After hanging up his boots, Willie became a Borstal officer, an occupation he held until his retirement in 1982. Willie died in February 1992 in Wellingborough. He was 75 years old.