SAINTS held on for a morale-boosting 2-1 win at potential playoff final opponents Leeds United on the final day of the Championship season.

All three goals were scored in the first half, with Adam Armstrong netting his 21st of the season to give Saints an 18th-minute lead.

Joel Piroe equalised for the hosts just three minutes later before Will Smallbone restored the lead after excellent work from Kyle Walker-Peters.

With nothing on the line in terms of promotion, manager Russell Martin rested key players in the second half and it became a defensive exercise.

But Saints held on to finish their season with 87 points from 46 games, winning 26 matches and scoring 87 goals. 

They will play fifth-placed West Brom in the semi-final of the Championship playoffs with promotion to the Premier League still on the cards. 

Martin made a significant tactical change for the final day fixture, starting with five defenders and Jan Bednarek centrally as the marshall of it all.

The boss wanted to see more intent moving the ball forward quickly, and wing-backs Walker-Peters and Ryan Manning aided that.

Leeds, starting with summer Saints target and former Swansea man Piroe, knew only a win gave them a chance of automatic promotion.

They almost got off to a good start when Alex McCarthy was forced to deny a Junior Firpo free-kick but it was Saints with the opener.

Che Adams recycled from a corner-kick and delivered an inch-perfect central ball for Armstrong to run onto and scuff behind Illan Meslier in the net.

However, their lead lasted less than 180 seconds as Piroe took advantage of a poor Taylor Harwood-Bellis clearance to thump in from the edge of the area.

The few seconds that had been played since the Saints goal were all Leeds and the Elland Road atmosphere was restored. 

Ethan Ampadu tested McCarthy with a header before he was ruled offside, while Adams had what looked like a certain goal cleared at the back post.

It took a moment of magic to retake the lead, with Walker-Peters keeping in play a diagonal all the way to the byline from defender Jan Bednarek.

He dribbled into the box and laid onto a plate for Smallbone - who also scored after Armstrong in the 3-1 win over Leeds in September - to finish in the 35th minute.

That was not the end of the first-half chances, with Harwood-Bellis hitting the crossbar with a header and Georginio Rutter denied a penalty after a coming together with Jack Stephens.

Martin opted to bring Manning off during the break, after he was booked for a nothing interaction with Willy Gnonto, with Ryan Fraser his replacement. 

Saints controlled the start of the second half and Armstrong had a second ruled out for offside, after he had rounded Meslier to finish into an open net.

The visitors then lost key men Adams and Downes to substitutions ahead of the playoffs and the game swung in the favour of Leeds.

But, aside from McCarthy getting gloves on a couple of crosses, the hosts were their own worst enemies with a reluctance to shoot. 

Ross Stewart made his long-awaited return to action after a hamstring injury in November as an 82nd-minute sub - making only his third Saints appearance. 

Smallbone had a chance for a second but fired into the side netting with a dangerous free-kick, while Crysencio Summerville blasted a similar Leeds chance into the wall.

Leeds United: Meslier; Byram (Roberts, 77), Rodon, Ampadu, Firpo; Gruev (Gelhardt, 82), Kamara (Gray, 60), Gnonto (Anthony, 60), Piroe, Summerville; Rutter (Joseph, 60).

Unused subs: Darlow, Cresswell, Cooper, Shackleton, Gelhardt.

Booked: Gnonto, Firpo, Gruev, Piroe.

Saints: McCarthy; Walker-Peters (Bree, 82), Harwood-Bellis, Bednarek, Stephens, Manning (Fraser, h-t); Downes (Rothwell, 67), Smallbone, Aribo; A Armstrong (Stewart, 82), Adams (Kamaldeen, 60).

Unused subs: Lumley, Bree, Charles, Edozie, Brooks, Stewart.

Booked: Manning, Bednarek, Rothwell.

Referee: Matt Donohue.