A member of the Watford academy since he was eleven, he was handed the number 29 jersey for the 2010–11 season. He made his professional debut for the club on 24 August 2010, in their 2–1 League CupSecond Round exit to Notts County at Vicarage Road. Thompson made his league debut against Burnley at home on 12 February, a game Watford lost 3–1. Thompson later signed his first professional contract at Watford, which keeps him until 2013. Thompson scored his first professional goal for Watford three days later. In June 2011, Thompson signed a new contract with Watford, keeping him until 2014. Upon his return from his loan spell at Barnet, Thompson then made his first league appearance under Gianfranco Zola having come on as a substitute for Daniel Pudil against Birmingham City on 16 February 2013.
Loan spells
On 25 August 2011, Thompson joined Brentford on a month's loan, scoring on his Bees debut in a Football League Trophy tie away to MK Dons. His goal made the match 1–1 at the time, it finished 3–3 with Brentford winning 4–3 on penalties. His loan was later extended for another month. Thompson returned to Watford on 26 October. Thompson re-joined Brentford on a one-month youth loan in early February which was extended until the end of the season on 10 April. Throughout the season, Thompson played a total of 22 games for Brentford in all competitions, but did not make an appearance for Watford. During the first month of the 2012–13 season, Thompson played the entire game in Watford's League Cup tie against Bradford City, and subsequently joined Wycombe Wanderers on a month-long youth loan. Two days after joining the club, Thompson made his Wycombe Wanderers debut, playing 90 minutes, in a 1–0 loss against Southend United. However, just two appearance, Thompson returned to his parent club. On 4 January 2013, Thompson joined Barnet on loan for a month. He made his debut as an 82nd-minute substitute for Ricky Holmes in a 2–0 home win over Bradford City. On 14 January, Thompson returned to Watford early after suffering a dislocated and fractured shoulder in training.
Southend United
On 9 August 2013, Thompson announced via Twitter that he had joined League Two outfit Southend United on loan. Thompson made his Southend United debut, coming on as a substitute for Marc Lairdseven minutes from full-time, in a 1–0 loss against Hartlepool United. Thompson made nine appearance in the first half of the season, due to his international commitment. In January 2014, Thompson made the move to Southend United a permanent one for undisclosed fee, signing an 18-month contract. Just after finishing his loan spell, Thompson attracted interests from two clubs before Southend United won the race to sign Thompson. Thompson's first game after signing for the club on a permanent basis came on 18 January 2014, where he set up a goal for Barry Corr, in a 3–0 win over Chesterfield. Thompson ended his season, making sixteen appearance after he injured his calf, although he never played throughout the 2013–14 season despite being fit and being once on the bench. The next season, Thompson missed the first four matches, due being on the bench and made his first appearance, coming on as a substitute in the first half, in a 2–0 loss against Plymouth Argyle on 30 August 2014. Since recovering from a calf injury, Thompson have established himself in the 2014–15 season despite missing out for four matches in late-December. Thompson was once again on the sidelined during a match against Mansfield Town on 3 April 2015 when he was injured in the first half and had to be substituted by Cian Bolger. After having surgery, it was announced that Thompson would be out for the remainder of the season and ended his season, making twenty-nine appearance in all competitions. Despite being absent, the club went on achieve promotion to Football League One after beating Wycombe Wanderers in the play-off final.
Bury
Thompson signed for Bury on 1 June 2017. He had a short loan spell at Bradford City and made nine appearances for the Bantams in 2017–18. Under the management of Ryan Lowe, Thompson in 2018–19 has become a Bury first team regular, wearing the number five shirt, and has captained the team on occasion.
Rotherham United
On 27 August 2019, Thompson signed for Rotherham United.