Wells began his career as a youth at Brentford and he embarked on a scholarship at the beginning of the 2001–02 season. His first involvement with the first team came on 20 September 2003, when he was named as a substitute for a 2–1 Second Division win over Hartlepool United. He was an unused substitute for the next two games and made his debut in a 3–0 league defeat to Sheffield Wednesday on 4 October 2003. With the game already lost, Wells replaced Leo Roget after 81 minutes. He made no further appearances and was released by manager Martin Allen at the end of the 2003–04 season.
Hampton & Richmond Borough
Wells signed for Isthmian League Premier Division club Hampton & Richmond Borough in 2004. In the 2004–05 season, the club missed out on a playoff place on goal difference. Wells' season ended on a sour note after being sent off in the Isthmian League Cup final, which Hampton lost 3–1 to Slough Town. He managed 41 appearances. In 2005–06, Wells made 35 appearances and scored two goals as Hampton finished fifth and suffered a playoff final defeat to Fisher Athletic. Wells made 40 appearances and scored two goals during the 2006–07 season and won the first silverware of his career as Hampton were promoted to the Conference South as Isthmian League Premier Division champions. He was also made captain of the club. Wells enjoyed a good 2007–08 season in the Conference South, making 41 appearances and scoring one goal as Hampton qualified for the playoffs with a third-place finish, though he again suffered playoff heartache as Hampton succumbed to a 2–0 defeat in the final to Eastbourne Borough. Wells had a solid 2008–09 season, making 42 appearances and scoring three goals, helping Hampton to a second-place finish. He could bring them no luck in the playoffs, as Hampton lost 3–2 in the final to Hayes & Yeading United. Wells made 32 appearances during the 2010–11 season and scored three goals. He made over 260 appearances during his Hampton career.
Prison sentence
Wells' career came to a halt on 27 April 2011 when he was one of a group of Brentford supporters charged with affray and sentenced to 12 months in prison for his involvement in a fight between Brentford and Leyton Orient supporters outside London's Liverpool Street station in May 2010. He also received a banning order from football grounds for seven years. He was released on 6 October 2011.
Wells signed for Conference South club Staines Town on 14 October 2011. He made only five appearances for the club before leaving the following month.
Braintree Town
Wells signed for Conference Premier club Braintree Town in November 2011 and linked up with manager Alan Devonshire, who signed him for Hampton & Richmond Borough. Wells stated that he was able to make the step up to the Conference Premier because of the gym work he had done in prison. He made 26 appearances during the 2011–12 season and scored no goals. He was a virtual ever-present during the 2012–13 season, making 43 appearances and scoring three goals. He scored his first goal of the 2013–14 season in a 3–2 league victory at Wrexham on 24 September 2013. He finished the season with 48 appearances and three goals and was named in the Conference Premier Team of the Year, as the Iron narrowly failed to claim a playoff place. Wells departed the club after the season, after making 116 appearances and scoring six goals during his three seasons with the Iron.
Stevenage
On 20 June 2014, Wells signed for League Two club Stevenage for a reported fee of £25,000. After signing, he said "I started at Brentford and through my stupidity I threw it away. Now I'm older and wiser and I think I still I have a lot to offer". Wells made his debut for Stevenage and his first-ever starting appearance in the Football League on the opening day of the 2014–15 season, in a 1–0 win over Hartlepool United. He went on to become a regular during the 2014–15 and 2015–16 seasons, before falling out of favour during 2016–17. Wells made 97 appearances and scored seven goals for the club before his release at the end of the 2016–17 season.
On 9 June 2017, Wells joined National League club Boreham Wood on a one-year contract, with the option of a further year, combined with a coaching role in the club's academy. He made 21 appearances before being forced into retirement after suffering an anterior cruciate ligament tear during an FA Trophy first round match versus Dartford on 19 December 2017.
Personal life
Wells is a Brentford supporter. He gave up a part-time job as a school caretaker in order to return to professional football with Stevenage. His son Joe is also a footballer.