Holmes played as an amateur for three season with the Parkdale Canoe Club of the Ontario Hockey Association (OHA) from 1908 to 1911, before joining the professional Toronto Blueshirts of the National Hockey Association (NHA) in 1912–13. Holmes won the first of his four Stanley Cups in 1914. Although being under contract to the Blueshirts, Holmes joined the Seattle Metropolitans of the Pacific Coast Hockey Association (PCHA) for the 1915–16 season, winning his second Stanley Cup (1917) in his second season with the Metropolitans. For the 1917–18 season, Holmes ended up playing for the Torontos (the following year renamed as the Toronto Arenas) of the National Hockey League (NHL) through a series of loans by other teams. Holmes won his third Stanley Cup in his only full season with the Torontos. After playing two games in the 1918-19 season for the Toronto Arenas, Holmes would be recalled by the Metropolitans. Holmes played for the Metropolitans for the next six seasons, until the team folded. In the 1924–25 season, Holmes joined the Victoria Cougars of the West Coast Hockey League (WCHL/WHL). Holmes played for the Cougars for two seasons, winning the Stanley Cup for his fourth and last time. After the WCHL/WHL league folded, Holmes joined the Detroit Cougars of the NHL, playing with the Cougars for two seasons before retiring.

Harry "Hap" Holmes, alternatively nicknamed "Happy",[8] started playing ice hockey as an amateur with the Parkdale Canoe Club in the Ontario Hockey Association (OHA) in the 1908–09 season.[9] He played with Parkdale for three seasons, for 11 regular season games and two playoff games. In his first season with the Parkdale Canoe Club, Holmes lost all three games in which he appeared,[10] giving up 22 goals over that stretch. The following season, Holmes appeared in four games, winning and losing two games apiece. Over the 1909–10 season, Holmes gave up 26 goals. In 1910–11, his last season with the Parkdale Canoe Club, he appeared in four regular season games once more, winning three and losing one, while giving up only 12 goals over those games. In the playoffs, Holmes played two games, losing one and tying the other, surrendering nine goals. In the 1911–12 season, Holmes appeared in only one exhibition game, as the Toronto Blueshirts were unable to play due to the slow completion of their artificial ice. Holmes played a game for the Toronto Tecumsehs, conceding three goals in a victory.[11]

Holmes began his professional career playing for the Toronto Blueshirts of the National Hockey Association (NHA) in 1912–13.[12] Holmes played with the Blueshirts for three seasons.[11] In his first season with the Blueshirts, Holmes had a 6–7 (win-loss) record over 15 games with a shutout, and a 4.47 goals-against average. The Blueshirts ended up missing the playoffs. In the 1913–14 season, Holmes' second season with the Blueshirts, he won the Stanley Cup for the first time.[9] It was the first time a Toronto-based team won the Stanley Cup.[9] In the NHA playoffs, Holmes won one out of two games, and recorded a 1.00 goals-against average and one shutout; in the Stanley Cup final, Holmes won all three games and finished with a 2.59 goals-against average.[11] The next season, the Blueshirts missed the playoffs, as Holmes had only eight victories over 20 games, ending up with a 4.18 goals-against average.[11]

In the 1915–16 season, Holmes signed with the Seattle Metropolitans of the Pacific Coast Hockey Association (PCHA), although he was still under contract to the Blueshirts.[11][12] In his first season with the Metropolitans, Holmes played 18 games. He finished with a 9–9 record, with no shutouts and a 3.67 goals-against average. That season, the Metropolitans missed the playoffs. In his sophomore season, Holmes posted a 16–8 record over 24 games, with two shutouts and a 3.28 goals-against average. In the Stanley Cup finals, Holmes posted a 3–1 record with a 2.75 goals-against average, en route to the Metropolitans' only Stanley Cup win.[11] The Metropolitans became the first American-based team to win the Stanley Cup.[12]

In November 1917, Holmes signed as a free agent with the Montreal Wanderers. The Wanderers, in turn, loaned Holmes back to Seattle on December 12, 1917.[11] On January 4, 1918, the Metropolitans returned Holmes under loan to the Torontos, now in the newly formed NHL.[11] In his only full season with the Torontos/Arenas, Holmes appeared in 16 regular season games, posting a 9–7 record, with a 4.73 goals-against average and no shutouts. In the NHL playoffs, Holmes played two games, winning and losing one apiece. In the Stanley Cup finals, Holmes had a 3–2 record over five games, with a 4.00 goals-against average, en route to Holmes' third Stanley Cup win. He is the only member of both the Blueshirts' 1914 Stanley Cup win and the Torontos' 1917 Stanley Cup win.[11] After playing only two games with the Toronto Arenas the following season, surrendering nine goals in two losses, Holmes was recalled by the Metropolitans on December 27, 1918.[11]

In the 1918–19 season Holmes appeared in 20 regular season games for the Metropolitans, winning 11 and losing nine, with no shutouts and a 2.25 goals-against average. In the PCHA playoffs, Holmes played two games, winning and losing one apiece, and surrendering five goals in total.[11] The Metropolitans made the Stanley Cup finals once more. Playing against the Montreal Canadiens of the National Hockey League (NHL), the series was abandoned tied at two wins apiece, because of the Spanish Influenza pandemic. Montreal could not continue the series because one of their players, Joe Hall, was severely ill with influenza; however, the Metropolitans did not wish to accept the Cup by default.[13] Hall eventually died on April 5, 1919, five days after the end of the series, in a Seattle hospital.[13][14] The only draw of the series was a scoreless affair; after playing 20 minutes of overtime, referee Mickey Ion called the game off.[9][13]

In the 1919–20 season, Holmes appeared in 22 games, winning 12 games, and losing 10. He finished the season with four shutouts and a 2.46 goals-against average. In the PCHA playoffs, Holmes played two games, surrendering three goals, and ending up with a loss and a win. The Metropolitans made the Stanley Cup finals for the second straight season, playing against the Ottawa Senators of the NHL.[12] The Metropolitans lost, and Holmes posted a 2–3 record with a 3.00 goals-against average.[11]

Holmes played the next four seasons with the Metropolitans, but failed to make the Stanley Cup final. Over that stretch, Holmes and the Metropolitans won about half the games each season. The Metropolitans missed the playoffs in only the 1922–23 season. In the 1920–21 season, Holmes appeared in 24 games. He posted a 12–11–1 (win-loss-tie) record, with a 2.63 goals-against average and no shutouts. In the playoffs, he lost both games he appeared in, and let in 13 goals. The following season, he posted an identical win-loss-tie record in both the regular season. The only difference was a 2.60 goals-against average in the regular season, with four shutouts, and the reduction of his playoffs goals-against by 11 goals. In the 1922–23 season, Holmes appeared in 30 games, posting a 15–15 record, with two shutouts and a 3.45 goals-against average; however, the Metropolitans missed the playoffs that season. In the 1923–24, Holmes' last with the Metropolitans, he appeared in 30 regular-season games, posting a 14–16 record, with two shutouts and a 3.26 goals-against average. Despite an extra loss, the Metropolitans made the playoffs that season. Holmes played two games, losing one and tying one, ending up with a 1.79 goals-against average.[11]

In 1924–25, after the Metropolitans folded and the rest of the PCHA merged with the WCHL, Holmes joined the Victoria Cougars.[12] In his first season with the Cougars, Holmes posted a 16–12 regular season record, with three shutouts and a 2.25 goals-against average.[11] In the WCHL playoffs, Holmes was undefeated in four games. He had two wins and ties each, with one shutout and a 1.75 goals-against average. In the Stanley Cup final, Holmes posted a 3–1 record with a 2.00 goals-against average against the Montreal Canadiens.[11][12] It was the last time a non-NHL team won the Stanley Cup.[15] It was Holmes' fourth and last Stanley Cup victory.

The following season, Holmes had a 15–11–4 regular season record, with four shutouts and a 1.68 goals-against average. In the WHL playoffs, Holmes nearly duplicated his results from the previous season, posting a 2–0–2 record, with one shutout and a 1.45 goals-against average. In the 1926 Stanley Cup final, the Cougars lost the series 3–1 against the Montreal Maroons.[11][12] That marked the last time a non-NHL team appeared in the Stanley Cup finals, as the WHL folded after the 1926 Stanley Cup final, and its players were absorbed by the NHL.[16] It was Holmes' seventh and final Stanley Cup final appearance.

A new NHL franchise in Detroit bought the rights to the Victoria Cougars players, and named the team the Cougars. Holmes played his last two professional seasons with the Detroit Cougars. Holmes, playing for Detroit, posted 17 shutouts in 85 appearances. Detroit failed to make the playoffs in both of Holmes' seasons with them, as Holmes only won 30 of his 85 appearances. In Holmes' first season with Detroit, he posted an 11–26–4 record, over 41 games played. Holmes had six shutouts and overall, his goals-against average that season was 2.23. In the 1927–28 season, Holmes' final one as a professional player, he appeared in all 44 of Detroit's games. He posted at 19–19–6 record, with 11 shutouts and a 1.73 goals-against average.[11]

As a player, Holmes wore a baseball cap in net to protect his head from spectators spitting tobacco or throwing other objects at it. Holmes was bald, and as described by the Windsor Star, "his shining bald dome presented a tempting target".[17] Holmes played a stand-up style, and relied on proper positioning to stop the puck. Holmes' play was consistent, and he was relaxed and nonchalant in the nets, leading some to describe his play as almost lazy.[17]