Born in Newquay, Cornwall, Vassell made his professional debut on the opening day of 2011–12, coming on as an 82nd-minute substitute for Tom Hitchcock in a 1–1 draw with Shrewsbury Town at the New Meadow. He joined Truro City on a work experience loan in March 2012 until the end of the season, where he made six appearances for the club in the Conference South. Vassell moved to Bideford on loan in August 2012 for three months. He played in two cup matches for Plymouth in 2013–14 before joining Weymouth on loan until the end of the season in March 2014.
Truro City
After his release from Plymouth at the end of 2013–14, Vassell returned to Truro City, and after scoring two goals in a 5–0 friendly win over Godolphin Atlantic on 11 July 2014, he signed for the club the following day.
Luton Town
Vassell signed for League Two club Luton Town on a one-year contract on 23 July 2016 after a successful trial. He made his debut as a substitute in a 3–1 win at home to newly relegated Championship club Aston Villa in the EFL Cup first round on 10 August. After entering 13 of his first 16 matches as a substitute, Vassell forced his way into the starting lineup on a regular basis, and scored his first goal for Luton in a 2–0 win away to Morecambe on 19 November. Vassell scored the winning goal in Luton's 3–2 win away to Swindon Town in the EFL Trophy second round on 6 December, ensuring their progression to the third round. Luton exercised the option of a one-year extension to his contract on 20 December to keep him at the club until the summer of 2018, having made 23 appearances and scored two goals up to that point in 2016–17. He scored the opening goal in a 2–0 win at home to Cambridge United on 28 January 2017, which marked the start of a run of five goals from four matches. Vassell scored Luton's third goal in a 4–1 win away to Accrington Stanley on 29 April, a result that confirmed their place in the play-offs. He scored Luton's second goal in their 3–2 defeat away to Blackpool in the play-off semi-final first leg, and played in the 3–3 home draw in the second leg, meaning Luton lost the tie 6–5 on aggregate. Vassell finished 2016–17 with 53 appearances and 14 goals. He scored twice on the opening day of 2017–18 in an 8–2 victory at home to Yeovil Town, but departed the club later that month having made 55 appearances and scored 16 goals.
Birmingham City
On 14 August 2017, Harry Redknapp signed Vassell for Championship club Birmingham City on a four-year contract for an undisclosed fee, reported by the Birmingham Mail as "over £1 million". He made his debut the following day in a 0–0 draw with Bolton Wanderers at St Andrew's, coming on as a substitute for Clayton Donaldson in the 73rd minute. Making his first start in the EFL Cup at home to AFC Bournemouth, he was prevented from scoring after rounding the goalkeeper only by Tyrone Mings' "desperate backheel". A hamstring injury forced Vassell off at half-time, but not before his manager was impressed: Vassell returned to the team as a substitute in a 3–1 defeat at home to Preston North End on 16 September, after which Redknapp was sacked. Two weeks later, under the caretaker management of Lee Carsley, Vassell scored his first goal for Birmingham on 27 September at home to Sheffield Wednesday, when he ran onto Jacques Maghoma's through ball to give his team just their second win of the season. When Steve Cotterill took over as manager, he put Vassell straight into his starting eleven. On his third league start, in the derby against Aston Villa on 29 October, he ruptured his anterior cruciate ligament and was out for the rest of the season. A hip injury the following August delayed his recovery, and he was unable to return to first-team action until 14 months after the original incident, coming on for the last few minutes of a 2–1 defeat at home to Middlesbrough in January 2019. He finished that season wth 14 appearances, all but two as a substitute, and did not score.
Cardiff City
Vassell signed a three-year contract with Championship club Cardiff City on 8 August 2019; the fee was undisclosed. He made his debut two days later as a substitute during a 2–1 victory over Luton Town, scoring the winning goal in injury time. After making three appearances, it was announced that Vassell was ruled out for up to two months due to a thigh injury suffered in an under-23's games.