O'Donnell began his career as an apprentice with Bournemouth, but was released. He turned professional with Bristol Rovers in May 1976, but was released without playing for them. He moved to Australia and played for Blacktown City Demons before rejoining Bournemouth in January 1982.
He moved to Torquay United in October 1982, making his debut at left-back in place of Mark Smith in the 3-1 win at home to Northampton Town on 16 October. He played 19 league games before being released at the end of the season. He returned to Australia and rejoined Blacktown City.
In February 1986, O'Donnell returned to the UK and joined Bath City. He played regularly for Bath until leaving in May 1987 when he joined Basingstoke Town. He later played for Bashley, Poole Town and Salisbury City. He was appointed as manager of Bournemouth Sports CMFC in the 1993 close season and took over as manager of Bournemouth Poppies in February 2000.
He left Poppies in June 2001 amid a mass resignation of the Poppies exscutive committee. and in January the following year took over as manager of Poole Town. However, he left Poole in August 2002.
He later returned to Bournemouth as their youth coach.
In February 2009 he joined the coaching staff at Dorchester Town as caretaker manager.