Ball joined Derby County's youth system at the age of 9 from local rivals Nottingham Forest, becoming a scholar in the Derby County Academy.
Although primarily involved with the scholar team – scoring six goals in three matches during December 2009 – Ball also featured for the Derby County Reserves side which won the 2009–10 Central League Central Section title, starting twice and scoring the winner in a 1–0 win over Macclesfield Town. He eventually netted 25 goals at U-18 and reserve level throughout the campaign. His first experience of first team football came when he was named as a substitute for Derby County's FA Cup 3rd Round tie at Millwall in January 2010. He made his full debut as a late substitute in Derby's 2–0 victory over Cardiff City on the final day of the 2009–10 season.
Ball enjoyed a blistering start to the 2010–11 season as he featured regularly for the Under-18s and the reserves, scoring 13 times for the former and 5 times for the latter by the middle of October. This form lead to Ball being named on the substitutes bench for the game versus Swansea City ahead of senior striker Chris Porter, despite Porter being fully fit. His form continued throughout the season and by the end of April, Ball had scored 31 goals – 21 for the under-18 side and 10 for the reserves. Ball again featured on the senior substitute bench for the games against Burnley and at Norwich City over the Easter holiday period, managing to get his 3rd and 4th first team appearance as a late substitute in both games, with Derby manager Nigel Clough hinting at his desire for Ball to break into the First Team in the 2011/12 season. Ball made his full debut on the final day of the 2010/11 season in a 2–1 defeat away to Reading, a match in which he had his first professional goal wrongly disallowed for offside. The week after the end of the campaign, Derby announced Ball would be given a first-year professional contract following the completion of the club's scholarship programme.
In July 2011, Ball signed a new three-year contract, which extended his stay at the Pride Park club until at least 2014. Ball scored his first senior goal for the club in a 2–1 win at home to Bristol City on 10 December 2011. Ball then scored the opening goal of the game against West Ham which was a great curling effort form the edge of the area after being played in by Nathan Tyson, this was the second former England goal keeper (Robert Green) he had scored against after scoring his first goal against David James. Ball scored his 3rd goal for derby, which proved to be the winner against Coventry City, once again this proved to be a goal against an internationally capped goal keeper in Joe Murphy who at the time had been capped twice by the Republic of Ireland. Ball became a regular in the Rams matchday 16 until he picked up an ankle injury in a reserves game against Belper Town on 26 March 2012. Ball returned from injury a 3–2 reserve win against Sunderland Reserves in the Totesport Cup semi-final game on 19 April 2012, playing the whole 90 minutes in central defence.
On 19 July 2012, Ball joined Football League One side Coventry City on a season long loan as Coventry defender Richard Keogh joined Derby. He scored his first goal for Coventry against Arsenal at the Emirates on 26 September 2012 in a League Cup tie. Ball scored 3 goals in 21 appearances (no goals in 15 league appearances), as his loan spell was affected by injuries which restricted him to 10 starts.
Ball remained at Derby throughout pre-season and featured in both first team and under-21 friendlies as well as being allocated squad number 22. Ball was in manager Nigel Clough's first team plans, however he was expected to mainly feature in under-21 matches. On 1 August, Ball joined League Two side Torquay United on a two-month youth loan until 7 October. He played every minute of the club's first nine league and cup matches but did not score as the team as a whole struggled, winning only once, drawing three times and losing five times. He finally opened his account for Torquay with a brace in the club's tenth match of the season, a 4–2 win against Cheltenham Town on 21 September. He played 76 minutes of the following game and was an unused substitute for the game after that before his loan spell ended and he returned to Derby. Torquay were keen on extending his loan but due to budget constraints they decided against it.
On 28 November, Ball joined League One side Notts County on loan until 2 January 2014. His loan was extended to the end of the season in January despite picking up a head injury in late December.
Ball was released by the club on 7 May, just before his contract was due to expire.
Ball joined St Mirren on trial after being released by Derby County. He scored 5 goals in two friendly matches against Blyth Spartans and Whitley Bay, which prompted the club to agree a one-year contract, with the option of a further year.
On 21 April 2015, Ball left the club by mutual consent prior to the end of the season. He made 24 appearances, scoring twice.
On 21 September 2015 Ball joined Conference North side Corby Town
On 10 November 2016 Ball signed for Barwell of the Northern Premier League
On 26 May 2017 Ball signed for Nuneaton Town F.C. of the National League North. 
Stats according to SoccerbaseAs of 24 January 2015
Central League Central Division Champions 2009–10; 2010–11
Derby County Reserve Player of the Year 2008–09; 2009–10; 2010–11