Shola pounced for his seventh international goal after just 15 minutes when visiting keeper Dejan Bogunovic spilled a free-kick allowing him to stroke the ball home.
David Platt’s team went in 1-0 up at half time, with Shola having another effort disallowed for offside, but were pegged back four minutes into the second period when Branimir Petrovic equalised with a long-range strike.
West Ham’s Jermain Defoe then looked to have regained the lead after 65 minutes but saw his effort disallowed for offside. However three minutes later he did put England back in front.
The visitors thought that they had done enough to earn a draw when Srdan Stanic equalised five minutes from time, only for reported Toon transfer target Darren Bent to pop up with a winner two minutes from the end.
Darren Ambrose replaced Brighton’s Bobby Zamora for the last 32 minutes without having a great impact on the game, while Michael Chopra was an unused substitute.
Meanwhile Jermaine Jenas looks set to start Tuesday’s senior international on the bench, with Frank Lampard and Phil Neville surprisingly set to be selected ahead of him.
Aaron Hughes will captain Northern Ireland in Tuesday’s friendly against Italy in Campobasso, while Shay Given is an injury doubt for Republic of Ireland’s Euro 2004 qualifier against Albania on Saturday.