O'Donnell played rugby union with the Glebe club in inner city Sydney.
Switching to rugby league O'Donnell joined the Glebe Dirty Reds in 1915 and had three seasons in the Sydney premiership.
In 1918 he moved to Brisbane and joined the Carltons club, one of the early incarnations of the Souths Magpies.
From there he made state appearances for Queensland against New South Wales over four years and in 1919 was selected in the Australian team as hooker.
During the 1920 Great Britain Lions tour O'Donnell played a match for Queensland against the visiting Britons.