26 września 2003 roku O’Neil został wypożyczony do Walsall FC. Swój pierwszy występ w nowej drużynie zaliczył 27 września, kiedy to zagrał w wygranym 2:1 pojedynku z Preston North End. O’Neil w ekipie Walsall zagrał jeszcze sześć razy, po czym, pod koniec października powrócił do Portsmouth. Po miesięcznej nieobecności, O’Neil 8 listopada zadebiutował w Premier League, było to w meczu z Leeds United. W spotkaniu tym Anglik zdobył także dwie bramki. W całym sezonie zagrał jeszcze w dwóch meczach.
24 września 2004 roku został ponownie wypożyczony, tym razem do Cardiff City. Swój pierwszy występ w tym klubie zaliczył 25 września, kiedy to zagrał w spotkaniu z Wolverhampton Wanderers. Pierwszą bramkę zdobył natomiast 23 października w pojedynku z Leicesterem City. Na Fratton Park powrócił w listopadzie. Sezon ten zakończył natomiast z 24 występami oraz dwiema bramkami. W następnych rozgrywkach zagrał w 36 meczach Premier League, w których zdobył sześć bramek, stał się zarazem drugim najlepszym strzelcem klubu, o jedną bramkę więcej od niego miał tylko Lomano LuaLua. W roku 2006 został także wybrany przez kibiców najlepszym piłkarzem roku. W następnych rozgrywkach O’Neil nie stracił miejsca w składzie występując w 35 meczach. W sierpniu 2007 roku za 5 milionów funtów przeszedł do Middlesbrough FC.