Hapgood made his Arsenal debut on 19 November 1927 against Birmingham City but was initially used as backup for left backHorace Cope; he didn't become Arsenal's regular left back until early 1929, but after that he made the position his own, right up until the outbreak of World War II in 1939. He played 35 or more matches in every season in that period, earning a reputation as an elegant and unruffled defender. Hapgood went on to succeed Alex James as Arsenal captain, leading the side to the league title in 1937-38, whilst personally winning five League Championships and two FA Cups.
Hapgood also played for England 30 times, making his debut against Italy in Rome, on 13 May 1930, which finished a 1-1 draw. Hapgood became England captain and wore the armband 21 times; his first match as captain was the infamous "Battle of Highbury" on 14 November 1934, against Italy, who were reigning World Champions at the time. England had not taken part in the World Cup, so the match was billed as the "true" World Championship match. The match was notoriously dirty, with many players sustaining injuries, including Hapgood himself with a broken nose; England beat the Italians (who were reduced to ten men for most of the match) 3-2.
Hapgood also captained England in another infamous match, against Germany in Berlin on 14 May 1938, where Hapgood and his players were made to give the Nazi salute before the match, under pressure from British diplomats. Hitler was not in attendance; England won the match 6-3.
The Second World War cut short Hapgood's playing career (he was only 30 when hostilities broke out). Hapgood served in the Royal Air Force during the war, whilst also playing for Arsenal and England in unofficial matches. In June 1940, he was one of five Arsenal players who guested for Southampton in a victory over Fulham at Craven Cottage. He also appeared as a guest player for West Ham United later in Second World War. It was during the war that Hapgood fell out with the Arsenal management, after he was loaned out to Chelsea and eventually left the club under a dark cloud. He played 440 times in all for Arsenal, scoring two goals.