Born in Coventry, Paterson made his senior début for Walsall on 31 August 2010, in a 2–1 defeat to Chesterfield in the Football League Trophy, making his league début four days later, in a 1–0 home loss to Colchester United. His first goal for the club came over a year later, as he scored in a 1–1 draw against Huddersfield Town on 5 November 2011. His second and third league goals came in a 2–1 loss to Bury on 2 January 2012, and in a 2–2 draw against Sheffield Wednesday on 20 March. His first goal of the 2012–13 season came on 1 September, as he opened the scoring in a 2–2 draw against Brentford. His scoring rate increased from his previous two seasons, and he scored his seventh goal of the season on 1 January 2013 to give Walsall a 1–0 win against Stevenage. He then stated that his target for the season was to score 10 goals, and that the team had regained their confidence following three wins in the last four games. On 2 February, he scored twice in a 3–1 win against Oldham Athletic. On 1 April, he gave a superb performance against Coventry City by scoring twice in a 4–0 win
On 2 July 2013, Paterson signed for Nottingham Forest on a three-year deal. The fee was undisclosed, however it was believed it was a six-figure fee with add-ons taking the total amount beyond £1million. He scored his first goal for the club in a pre-season friendly against Belgian side Royal Antwerp on 20 July. His first competitive goals came when he scored a hat-trick against West Ham United in the FA Cup third round on 5 January 2014. He scored his first league goal for the club in the following game, opening the scoring in a 1–1 draw away at Bolton Wanderers. He scored for the third game in a row on 18 January, scoring in a 4–1 win at home to Blackburn Rovers. On 11 February, he scored twice in a 3–0 win against Huddersfield Town. Paterson finished the 2013–14 season scoring 12 goals in 39 appearances in all competitions. With the signing of Michail Antonio in the close season, Paterson's game time was not as frequent during the 2014–15 season. He made 25 appearances in all competitions, scoring only once in a 5–3 victory against Fulham on 17 September 2014.
Huddersfield Town loan
On 1 September 2015, as the transfer window closed, Paterson joined Huddersfield Town on a season-long loan with a view to making the move permanent. He made his début for Town in the 2–0 loss against Cardiff City on 12 September. He scored his first goal for the club in the 2–0 win over Milton Keynes Dons on 21 October 2015.
Bristol City
On 27 August 2016, Paterson was presented to Bristol City fans as a new signing, on a three-year contract. He scored his first goal for Bristol City in a 2–1 win against former club Nottingham Forest on 1 October 2016. Paterson featured as Bristol City reached the semi finals of the 2017-18 EFL Cup with wins over Premier League opponents Watford FC, Stoke City, Crystal Palace F.C. and Manchester United. Paterson played as City lost in the semi-final tie against Premier League leaders Manchester City. On 5 January 2019 Paterson featured as Bristol City won 1–0 to upset Premier League side Huddersfield Town FC in the FA Cup third round.
On 8 August 2019, as the transfer window closed, Paterson joined Derby County on a season-long loan. The loan was cut short on 30 December 2019 after Bristol City exercised a recall clause in the loan agreement.
International career
Although born in England, Paterson has declared he would be open to play for Scotland, for whom he qualifies through his parents.