O'Donnell played youth football for Newcastle in County Galway before joining Arsenal as a trainee in the summer of 2002 after completing his Junior Certificate exams. He signed a professional contract at the club in January 2003 but left again in July 2005 without making an appearance for the first team. While he credits the coaching he received during this time with giving him greater confidence on the ball, he has expressed regret at moving to Arsenal at such a young age, feeling that if given the choice again he would have stayed at home, completed his Leaving Certificate exams and joined a team in the League of Ireland.
Falkirk
O'Donnell signed for Falkirk in August 2005 in search of more first-team opportunities and became a regular in their team, mostly playing on the left-side of midfield. He had a greater desire to be played centrally in his natural position, and after receiving no assurances about this from manager John Hughes, O'Donnell rejected a new contract in summer 2007.
Return to Ireland
O'Donnell was signed by Sean Connor on an 18-month deal for Bohemians in August 2007. He became a regular starter in the first team, which included scoring against Rhyl in the 2008 UEFA Intertoto Cup, but decided to move on after one season at Dalymount Park. Having rejected a new contract offer, he signed a two-year deal with Cork City on 21 February 2009. He signed for his local club, Galway United, in the weeks leading up to the 2010 League of Ireland season. He made 28 appearances for Galway scoring eight goals.
Shamrock Rovers
In January 2011, O'Donnell signed for the League of Ireland champions, Shamrock Rovers. On 22 February 2011, O'Donnell scored in his first match for the Shamrock against Dundalk in the Leinster Senior Cup. In August 2011, O'Donnell scored the winning goal from a penalty at Partizan Belgrade as Rovers became the first Irish club to reach the group stages of the UEFA Europa League.
Dundalk
He signed for Dundalk on 21 December 2012. O'Donnell suffered a very serious injury while playing for Dundalk against former club Shamrock Rovers on 18 April 2014. A scan revealed that he tore his anterior cruciate ligament and his posterior cruciate ligament and would be out for the remainder of the season. On 24 October 2014, O'Donnell scored the first goal in the 48th minute of Dundalk's 2–0 win over Cork City in the final match of the season. As a result, Dundalk were crowned premier league champions for the first time in 19 years, winning the league by two points over Cork City who led going into the match. It was O'Donnell's first start since returning from injury and he was awarded man of the match after an impressive display. The club captain went on to play a prominent role in title wins in 2015 and 2016. Dundalk's three-in-a-row achievement was enhanced as they achieved it despite a bruising fixture schedule brought about by qualification for the group stages of the Europa League. O'Donnell signed a new two-year contract before the 2017 season but it ended in disappointment with rivals Cork City completing a League and Cup double. He announced his retirement from football in January 2019.
After retiring in January 2019, O'Donnell was immediately hired as a Senior Opposition Analyst & Scout at Dundalk. O'Donnell was announced as the head coach of St Patrick's Athletic on a two-year contract on 31 August 2019, his first job in senior management, following the resigation of Harry Kenny. His brought in his former Arsenal and Falkirk teammate Pat Cregg as his assistant. His first game in management came on 6 September 2019 as his Pat's side came from behind to win 2−1 away to Finn Harps thanks to goals from Darragh Markey and substitute Rhys McCabe.
Career statistics
Professional appearances in playing career Competitive games only – correct as of 12 March 2020.