Saints struck twice in three minutes either side of the half-hour mark and despite dominating large portions of the game, the Blues couldn’t convert the chances that they created.
City were looking comfortable when Rowan McDonald was adjudged to have pushed Christian Norton in the box and the referee awarded a penalty.
Saints skipper Calum Slattery sent Gavin Bazunu the wrong way from the spot to give the Premier League’s basement side a 29th-minute lead.
It got worse for Paul Harsley’s side three minutes later as a fine run by Kornelius Hansen ended with the ball popping up to Christian Norton who lashed a volley past Bazunu to double Saints’ lead.
City could have halved the deficit before the break but Taylor Harwood-Bellis headed a Tommy Doyle corner a foot over the bar and Doyle saw a 20-yard free-kick clear the crossbar in first-half added time.
City continued to dominate possession after the break and were desperately unlucky on 59 minutes after Ben Knight spun off his marker before hitting a thunderous drive from 25 yards that struck the underside of the bar.
Wilson claimed it had crossed the line as it came down off the woodwork, but with no goal-line technology at AFC Totton, play was waved on by the referee.
Sub Lewis Fiorini came within inches of scoring for City on 73 minutes with a shot that just cleared the bar from 15 yards out – it would have been no less than the Blues deserved with the Saints hardly getting out of their half for much of the second period.
So, a loss on the south coast, but plenty of positives to take from a display that only lacked more incisive finishing and perhaps a slice of luck.
What it means…
City replace Saints at the foot of the Premier League 2 table.
City EDS travel to Zagreb on Wednesday looking for the win that will take Harsley’s side into the knockout stages of the UEFA Youth League.