SAINTS had enough chances to win three times at Cardiff City but let their lead slip to a 2-1 defeat in the Welsh capital. 

Joe Aribo opened the scoring for Saints after just 12 minutes and it looked like it would be a routine win with the volume of openings. 

But they could not find another way past Ethan Horvath in the net, who made seven saves with what felt like dozens of other shots wasted. 

Substitute Famara Diedhiou scored with a rare Cardiff attack just 20 minutes from time before 19 year old Cian Ashford netted a deflected 97th minute winner. 

Saints had total control but were unable to manage the situation after the leveller, barely registering a chance on goal.

Russell Martin had won all five previous games against Cardiff as manager, including an unprecedented double-double as Swansea boss. 

Erol Bulut, in charge of the Bluebirds, came into this one with a dozen first-team players injured, meaning a first start for 19 year old Ashford. 

Saints were without midfield mainstay Flynn Downes, as Martin called in Will Smallbone as his replacement in the only change from Tuesday's 3-0 win over Preston. 

Despite that, they had enough chances to fill all the hats in Wales in the first half alone, with Stuart Armstrong hitting the post up first. 

Aribo opened the scoring inside 12 minutes with his fourth goal of the Championship season, finishing a rebound from an Adam Armstrong strike. 

Adams was then presented with a one-on-one but hit goalkeeper Horvath before Aribo had a similar attempt as his first blocked behind. 

Cardiff had some joy in wide areas and Alex McCarthy, who kept his place after the 10-month injury to Gavin Bazunu, made a good stop to deny a David Turnbull header. 

The action was then back to the other end, where Adams fired wide another good chance and David Brooks hesitated with an open goal after A Armstrong sacked the keeper. 

They ended the half having had 12 shots, with six on target and only one outside the area - with which S Armstrong hit the woodwork. 

Martin opted for a change in the break with James Bree on for Ryan Manning, who had taken a knock earlier in the contest but sustained no lasting damage. 

The succession of chances continued as A Armstrong had a diving header brilliantly saved by the American international in the net. 

They were made to pay for their wastefulness as substitute a Yakou Meite shot fell straight for Diedhiou to divert in the unlikely equaliser from close range. 

Jan Bednarek had to make a nervous last-ditch tackle on Meite to prevent another chance - the home fans wanted a penalty but the Pole got the ball.

Martin responded with a triple-change but their flow was disrupted when Kamaldeen Sulemana suffered a scary moment in a collision. 

The winger was laid flat out on the turf amid a scramble in the box and was rolled into the recovery position by Bednarek before medical staff rushed on.

Despite the incident, Kamaldeen played on - but it was Cardiff who went close to a winner, forcing McCarthy into a save from a dangerous cross. 

Ashford's shot then deflected off Bednarek deep into nine added minutes to complete a remarkable turnaround.

There was time for one final bit of bad news for the visitors, as S Armstrong required a stretcher for an injury after awkwardly planting his leg in the dying embers. 

Cardiff City: Horvath; Romeo (Conte, 65), Goutas, Ralls, Phillips, Turnbull (Diedhiou, 60), Meite, Siopis, Colwill, Tanner (Giles, 77), Ashford. 

Unused subs: Turner, Wintle, Sawyers, Colwill, Lawlor, Antwi. 

Booked: Phillips.

Saints: McCarthy; Walker-Peters, Harwood-Bellis, Bednarek, Manning (Bree, h-t); Smallbone (Fraser, 80), Aribo (Rothwell, 72), S Armstrong; Brooks (Edozie, 80), A Armstrong (Kamaldeen, 80), Adams. 

Unused subs: Lumley, Stephens, Charles, Dibling. 

Booked: S Armstrong, Kamaldeen, Bednarek. 

Referee: Oliver Langford.