A product of Manchester United's youth academy, Campbell progressed to their first team in the 2006–07 season. He made four appearances without scoring in his tenure at the club. He had a loan spell at Belgian club Royal Antwerp, where he scored 24 goals in 38 appearances. He also had loan periods with Hull City and Tottenham Hotspur, where he scored 15 goals in 37 matches and three goals in 22 appearances respectively. He signed for Sunderland at the beginning of the 2009–10 season for £3.5 million. His involvement at Sunderland was limited due to an anterior cruciate ligament injury he sustained in his second season at the club, as well as a recurrence of the same problem later in the season. He moved to Cardiff in January 2013 on a three-and-a-half-year deal, and then Crystal Palace 18 months later.