Holding played for Stalybridge Celtic Juniors before joining the Bolton Wanderers youth system at the age of seven. He joined League Two club Bury on loan on 26 March 2015 for rest of the 2014–15 season. Holding made his only Bury appearance on 3 April 2015 as a 79th-minute substitute in a 2–0 away win against Cambridge United. On his return to Bolton, he signed his professional contract with the club. He made his Bolton debut on 11 August 2015 as a starter in a 1–0 home defeat to Burton Albion in the League Cup. He scored his first goal for the club on 23 January 2016 in the seventh minute of a 3–1 home win against Milton Keynes Dons. Holding was voted as Bolton Wanderers' Player of the Year for the 2015–16 season. He made 30 appearances, scoring one goal, as the team finished bottom of the Championship and were relegated to League One.
Arsenal
Holding signed for Premier League club Arsenal on 22 July 2016 for a fee of around £2 million. Following injuries to centre backs Per Mertesacker and Gabriel Paulista, he was called upon to make his Arsenal debut in the 2016–17 Premier League season opener on 14 August 2016 against Liverpool, which Arsenal lost 4–3 at home. In the final two months of the season, Holding became a regular member of Arsenal's starting line-up, with the team winning all six of the matches he played in the Premier League. He played the full 90 minutes in Arsenal's 2–1 victory over Chelsea on 27 May in the 2017 FA Cup Final at Wembley Stadium. Holding played in the 2017 FA Community Shield on 6 August which Arsenal won 4–1 penalty shoot-out to Chelsea after a 1–1 extra-time draw. He scored his first Arsenal goal on 28 September 2017 with a close-range shot in their 4–2 away win over BATE Borisov in the UEFA Europa League. He signed a new long-term contract with the club on 1 May 2018. On 5 December 2018, Holding suffered a ruptured anterior cruciate ligament in his left knee during a 2–2 draw against Manchester United. Holding would undergo surgery and was expected to be out for about six to nine months. Holding made his return to first team action on 24 September 2019 in Arsenal's 5–0 EFL Cup home victory against Nottingham Forest. He marked his return from injury with his first goal at Emirates Stadium, scoring Arsenal's third from a Reiss Nelson corner-kick.
International career
Holding was called up to the England under-21 squad for the Toulon Tournament May 2016 as a replacement for Everton defender Brendan Galloway. He made his debut for Gareth Southgate's team when starting against Guinea on 23 May. England won the tournament with Holding making two appearances, and was an unused substitute in the final on 29 May as England beat France 2–1. He was selected for England's squad for the 2017 UEFA European Under-21 Championship in Poland, but did not make an appearance with England eliminated in the semi-final. Holding made five appearances for the under-21s from 2016 to 2017.