Early career and Plymouth Argyle As a child, Barnes played for Bath Arsenal, where his teammates included fellow future professional
Scott Sinclair He began his senior career as a prolific goalscorer with local club
Paulton Rovers of the
Southern League. He had an extended trial with Championship club
Plymouth Argyle in March 2007, and sufficiently impressed to be awarded with an eighteen-month contract by the club, having scored several goals for the reserve team. He made his Plymouth debut in the first round of the
League Cup in August 2007 against
Wycombe Wanderers, coming on as a substitute for first-team regular
Sylvan Ebanks-Blake. He subsequently found first-team opportunities hard to come by, and was sent on loan to
Conference side
Oxford United in November 2007 to gain some experience. Barnes featured five times for Oxford United, including two
FA Cup ties against
Southend United, before returning to Plymouth. He was sent out on loan again in March 2008 to another Conference club, this time to
Salisbury City. He featured in five league matches for the club but did not find the back of the net. Barnes was loaned out for a third time in November 2008 to
Eastbourne Borough, with teammate
Daniel Smith. He impressed enough for his loan to be extended by a month, before he was recalled by Plymouth Argyle in January 2009, ahead of the club's match against
Bristol City. He made his league debut for the Pilgrims against
Wolves at
Molineux, scoring his first goal for the club against
Coventry City. His performances at the back-end of the
2008–09 season were rewarded when he signed a two-year contract extension in May 2009. He joined
League Two club
Torquay United on loan until the end of the season in February 2010, but returned a month later having made six appearances.
Brighton & Hove Albion in 2011 Barnes subsequently joined
League One club
Brighton & Hove Albion on loan until the end of the season. He scored on his debut against
Tranmere Rovers two days later, having been introduced as a substitute ten minutes earlier. On 8 July 2010, Barnes signed a two-year contract with Brighton & Hove Albion after transferring for an undisclosed fee from Plymouth Argyle. On 12 April 2011, he scored the decisive goal in a 4–3 win at home against
Dagenham & Redbridge, which confirmed their promotion to the
Championship. Barnes finished the season as Brighton's second-top goalscorer behind
Glenn Murray, with 20 goals in 49 appearances. In the
2011–12 season Barnes remained a first-choice striker for Brighton's return to the Championship. He finished the season as Brighton's leading goalscorer with 14 goals in all competitions, 11 in the league. On 9 March 2013, Barnes received a red card in stoppage time against
Bolton Wanderers for attempting to trip up the referee. He was subsequently handed a seven-match suspension by
the Football Association. Fans and manager
Gus Poyet were critical of Barnes for this action as it left the club with only one senior striker available to play, as
Craig Mackail-Smith and
Will Hoskins were already injured for the rest of the season. On his return from the ban on 20 April, Barnes scored two goals in a 6–1 win over
Blackpool and was named man of the match.
Burnley On 10 January 2014, Barnes joined
Burnley for an undisclosed fee on a three-and-a-half-year deal. On 8 November, he scored the only goal at
Turf Moor to defeat
Hull City and gain Burnley's first win of the
Premier League season. He scored a second goal on 13 December, the sole goal in a home victory over
Southampton to take Burnley out of the relegation zone. In November 2019, Barnes signed a new contract with Burnley until June 2022. In February 2015, Barnes performed a high tackle on
Chelsea's
Nemanja Matić, who was sent off for pushing him in retaliation. Barnes did not receive a booking for the challenge, and
The FA confirmed that they would not take retrospective action as that was not normal procedure for attempted tackles. Barnes was publicly criticised by Chelsea manager
José Mourinho, and said of the criticism "I found that hilarious". On 24 May 2015, as relegated Burnley finished the season with a win over
Aston Villa, Barnes was taken off with knee
cruciate ligament injuries, which would rule him out for the majority of
the following campaign. On 3 March 2018, he wrote himself into the history books, scoring his 16th goal in the Premier League to secure a 2–1 victory for Burnley against
Everton. His 16th goal, and his 6th of the season, made him Burnley's leading scorer in the
Premier League since it was formed in 1992. On 13 April 2019, Barnes was booked "in the strangest of circumstances" for kissing defender
Joe Bennett during a match against
Cardiff City. On 21 January 2021, Barnes scored the only goal via a
penalty in a 1–0 away league win over champions
Liverpool, handing them their first league defeat at
Anfield in 68 matches and sealed the Clarets' first win at Liverpool since 1974. This ended Liverpool's unbeaten home run in the league which stretched back to April 2017. With Barnes also totalling the 100th goal of his senior career. His 50th league goal for Burnley in a 2–1 away win against
Middlesbrough helped to seal Burnley's promotion back to the Premier League at the first attempt. This was Barnes' third promotion to the top flight with Burnley.
Norwich City On 17 May 2023,
Norwich City announced the signing of Barnes, effective upon expiry of his Burnley contract on 1 July. He made his debut for them in the first match of the season on 5 August, starting in a 2–1 win against Hull alongside fellow striker
Josh Sargent, although it was
Adam Idah, the player who replaced him as a substitute, who scored the winning goal. He remained in the starting line-up and scored his first goal for Norwich on 20 August against
Millwall and added a second with a penalty in the following match against
Huddersfield Town. His run in the first team ended on 20 September when he was injured in a 2–0 defeat to
Leicester City. He returned to the side on 25 November, starting a 1–0 win over
Queens Park Rangers. He would play in the majority of Norwich's remaining games, appearing in 35 of the 46 league games (including 5 as a substitute) and contributing 6 league goals, as well as scoring in an
FA Cup tie with Bristol Rovers. Following the end of the season, Barnes underwent surgery for a calf injury. Although he had hoped to return sooner, a setback meant he missed the first three months of the season. He finally returned to the side when he came on as an 83rd minute substitute for
Borja Sainz in a 6–1 win over his old club Plymouth on 26 November 2024. However, he failed to regain his place in the side, with his only start being in a 0–0 draw against
Portsmouth on 10 December, where he was substituted for
Onel Hernandez after 68 minutes. His other seven appearances of the season were all as a substitute,
Return to Burnley On 2 January 2025, Barnes rejoined Burnley on a free transfer until 30 June 2025 after leaving Norwich via mutual consent. On 20 May 2025, Burnley said it was discussing a new contract with the player. ==International career==