Southampton missed their chance to clinch promotion to the Premier League as Merouane Zemmama's superb free-kick gave Middlesbrough a thrilling win.
The Saints, who knew a victory would send them up, made the perfect start when Rickie Lambert set up Billy Sharp to score after just 47 seconds.
But Boro, who needed the three points to stay in the play-off race, levelled through Nicky Bailey's deflected shot.
And Zemmama won it 13 minutes from time with a curling shot into the corner.
The result means
Reading are crowned champions
and the race for the second automatic spot will go to the last day of the Championship season - if third-placed West Ham beat Leicester on Monday.
Saints need a win at home to relegated Coventry in next weekend's finale, otherwise they can be overhauled by the Hammers, who are five points behind Nigel Adkins' side but play the Foxes before facing Hull on Saturday.
Boro, meanwhile, can still finish in the top six if they beat Watford and Cardiff lose to Crystal Palace.
Tony Mowbray's men showed tremendous spirit to fight back from Sharp's first-minute strike, which came after some unselfish play by Lambert.
Adam Lallana's header played in Lambert who, with Boro keeper Jason Steele off his line and closing him down, unselfishly squared for Sharp to slot home from close range.
But Boro responded well, with Faris Haroun finding plenty of space down the right and sending in a dangerous low cross that Daniel Fox had to slide in to reach ahead of Lukas Jutkiewicz, before Barry Robson blasted over.
Robson joined Justin Hoyte in firing in further shots from distance and, although Fox fired just wide with a free-kick at the other end, the momentum was with Boro.
The home side deservedly levelled on the stroke of half-time, when Bailey met Jos Hooiveld's headed clearance with a first-time shot from the edge of the box which hit Richard Chaplow on its way into the net.
Saints lose their way
The last time Southampton lost a league game after taking the lead was on 29 September 2009, when Bristol Rovers won their League One match 3-2 at St Mary's after trailing 1-0 and 2-1
Saints responded by starting the second half on the attack and the game could have headed in a very different direction had referee Tony Bates decided to show Boro defender Seb Hines a second yellow card after 55 minutes for clipping Lallana's heels as he prepared to shoot on the edge of the box.
Bates kept his cards in his pocket, however, and Saints were unable to make their pressure count.
Boro belatedly began to venture forward again themselves and, when Fox fouled Jutkiewicz, Zemmama steped up to bend an unstoppable shot into the top corner.
The closest Saints came to an equaliser were two Guly Do Prado shots which fizzed just off target, and their fans will anxiously watch events at the King Power Stadium on Monday in the hope that Leicester can help their side over the finish line by taking some points off the Hammers.
Middlesbrough boss Tony Mowbray:
"That (win) keeps it alive for us, it keeps it bubbling.
"We know now we have to go to Watford and win. Yes, we would still need someone else to do us a favour - Cardiff have a tough game at Crystal Palace - but we are still in there and fighting.
"And, to be fair, the lads deserve it after that performance. To come from a goal down so early showed great character.
"But they knew they had to. They knew that only three points would do and they played in a very positive manner."
Southampton manager Nigel Adkins:
"It would have been nice to seal it today, especially for all those fans who have come such a long way to support us. But we will have to make sure we do it at home now.
"We know what we have to do next week when we play Coventry at our place in front of 32,000 people. We have to make sure.
"We had a great start here, it is not often you score a goal in the first minute and that should have given us a platform to go on and win the match, we know that.
"But credit to Middlesbrough, they worked very hard to get back in the match and they made it very difficult for us."
Full Time The referee blows his whistle to end the game.
Lukas Jutkiewicz takes a shot. Daniel Fox gets a block in. Merouane Zemmama decides to take the corner short. Stephen McManus challenges Jose Fonte unfairly and gives away a free kick. Jose Fonte takes the direct free kick.
Adam Lallana crosses the ball, clearance by Joe Bennett. Richard Lambert takes a shot. Blocked by Rhys Williams. Inswinging corner taken by Adam Lallana.
Corner taken by Adam Lallana from the left by-line, Jos Hooiveld has a header from close range and clears the crossbar.
Corner taken right-footed by Adam Lallana from the left by-line, clearance by Stephen McManus.
Lukas Jutkiewicz concedes a free kick for a foul on Jose Fonte. Free kick taken by Jose Fonte.
Merouane Zemmama sends in a cross, Kelvin Davis makes a save.
Curtis Main produces a cross.
Foul by Jack Cork on Rhys Williams, free kick awarded. The free kick is delivered right-footed by Tony McMahon from right wing, clearance by Morgan Schneiderlin.
Substitution Danny Butterfield leaves the field to be replaced by Morgan Schneiderlin.
Effort on goal by Guly Do Prado from a long way out goes over the bar.
Centre by Jack Cork, clearance by Seb Hines.
Guly Do Prado is caught offside. Free kick taken by Jason Steele.
The ball is swung over by Adam Lallana.
The ball is delivered by Richard Lambert, clearance by Stephen McManus.
76:57 Goal scored
Goal! - Merouane Zemmama - Middlesbro 2 - 1 Southamp'n Merouane Zemmama scores a goal direct from the free kick from just outside the penalty area to the top left corner of the goal. Middlesbrough 2-1 Southampton.
Booking The referee cautions Jose Fonte for unsporting behaviour.
Unfair challenge on Lukas Jutkiewicz by Daniel Fox results in a free kick.
Free kick awarded for an unfair challenge on Lukas Jutkiewicz by Jos Hooiveld. Direct effort from the free kick comes in from Tony McMahon, save by Kelvin Davis. Corner from the left by-line taken by Tony McMahon, Danny Butterfield manages to make a clearance. Richard Lambert is ruled offside. Seb Hines restarts play with the free kick.
Richard Lambert has an effort at goal from deep inside the area missing to the left of the target.
Free kick awarded for a foul by Rhys Williams on Jack Cork. Danny Butterfield takes the direct free kick.
The ball is crossed by Daniel Fox, clearance by Joe Bennett.
The assistant referee signals for offside against Billy Sharp. Nicky Bailey takes the free kick.
Centre by Lukas Jutkiewicz.
Free kick awarded for an unfair challenge on Jose Fonte by Lukas Jutkiewicz. Kelvin Davis takes the free kick. Richard Lambert takes a shot. Blocked by Tony McMahon. Inswinging corner taken by Adam Lallana, clearance made by Seb Hines.
The ball is delivered by Tony McMahon, Jos Hooiveld manages to make a clearance.
The ball is sent over by Faris Haroun, save by Kelvin Davis.
Centre by Lukas Jutkiewicz, clearance by Dean Hammond.
Daniel Fox takes a corner.
Substitution Richard Chaplow leaves the field to be replaced by Guly Do Prado.
Danny Butterfield restarts play with the free kick.
Substitution Rhys Williams on for Barry Robson.
Substitution Curtis Main on for Scott McDonald.
Richard Lambert fouled by Tony McMahon, the ref awards a free kick.
Danny Butterfield produces a cross.
Seb Hines gives away a free kick for an unfair challenge on Dean Hammond. Shot comes in from Richard Lambert from the free kick.
Inswinging corner taken by Daniel Fox, clearance made by Faris Haroun.
Daniel Fox takes the free kick. A cross is delivered by Adam Lallana, Nicky Bailey manages to make a clearance. Inswinging corner taken by Adam Lallana. Billy Sharp produces a right-footed shot from inside the area that goes over the bar.
Booking Seb Hines is shown a yellow card for unsporting behaviour.
Seb Hines challenges Jack Cork unfairly and gives away a free kick.
Richard Lambert has an effort direct from the free kick.
Booking Booking for Nicky Bailey for unsporting behaviour.
Free kick awarded for an unfair challenge on Adam Lallana by Nicky Bailey.
Corner taken left-footed by Daniel Fox, clearance made by Joe Bennett. Inswinging corner taken left-footed by Daniel Fox, Seb Hines makes a clearance.
Adam Lallana takes a shot. Blocked by Jason Steele.
The referee gets the second half started.
45:00 +3:39 Half time
Half Time The first half comes to an end.
The official flags Lukas Jutkiewicz offside. Free kick taken by Kelvin Davis.
45:00 +1:16 Goal scored
Goal! - Nicky Bailey - Middlesbro 1 - 1 Southamp'n Nicky Bailey fires in a goal from outside the area to the bottom right corner of the goal. Middlesbrough 1-1 Southampton.
The ball is swung over by Billy Sharp, Seb Hines manages to make a clearance. Centre by Billy Sharp. A cross is delivered by Barry Robson, clearance made by Jos Hooiveld.
Inswinging corner taken from the right by-line by Barry Robson, save by Kelvin Davis. Inswinging corner taken by Tony McMahon, clearance made by Jos Hooiveld. Free kick awarded for an unfair challenge on Adam Lallana by Tony McMahon. Kelvin Davis takes the direct free kick.
Richard Chaplow delivers the ball, save by Jason Steele.
Jason Steele restarts play with the free kick.
Substitution Joe Bennett joins the action as a substitute, replacing Justin Hoyte.
Barry Robson takes a shot. Blocked by Richard Chaplow. Richard Chaplow is ruled offside.
Direct strike on goal from the free kick comes in from Daniel Fox.
Booking The referee shows Merouane Zemmama a yellow card for unsporting behaviour.
Free kick awarded for a foul by Merouane Zemmama on Richard Chaplow.
Daniel Fox takes the inswinging corner, Nicky Bailey makes a clearance.
Richard Chaplow challenges Scott McDonald unfairly and gives away a free kick. Faris Haroun takes the direct free kick. Centre by Merouane Zemmama, save made by Kelvin Davis.
Billy Sharp sends in a cross, Stephen McManus manages to make a clearance. Corner from right by-line taken by Daniel Fox.
The ball is swung over by Faris Haroun. Effort from just outside the area by Justin Hoyte goes over the target.
Adam Lallana crosses the ball, Tony McMahon manages to make a clearance.
Centre by Merouane Zemmama, Kelvin Davis makes a save.
Billy Sharp is caught offside. Seb Hines takes the direct free kick.
Shot on goal by Richard Chaplow from just inside the area goes over the target.
The assistant referee signals for offside against Faris Haroun. Indirect free kick taken by Daniel Fox.
The ball is crossed by Barry Robson. The referee blows for offside. Kelvin Davis takes the indirect free kick.
Free kick awarded for an unfair challenge on Tony McMahon by Richard Lambert. Tony McMahon takes the free kick.
A cross is delivered by Merouane Zemmama, Daniel Fox makes a clearance. Inswinging corner taken by Barry Robson, save by Kelvin Davis.
Lukas Jutkiewicz takes a long range shot clearing the crossbar.
Effort on goal by Barry Robson from just inside the penalty box goes harmlessly over the target.
Centre by Faris Haroun.
Effort from the edge of the penalty area by Barry Robson goes wide of the left-hand post.
The ball is sent over by Scott McDonald, Jos Hooiveld manages to make a clearance. Free kick awarded for an unfair challenge on Jos Hooiveld by Lukas Jutkiewicz. Free kick taken by Kelvin Davis.
The referee blows for offside. Indirect free kick taken by Kelvin Davis.
The ball is swung over by Tony McMahon, Kelvin Davis makes a save.
Free kick awarded for an unfair challenge on Adam Lallana by Nicky Bailey. The free kick is swung in left-footed by Daniel Fox, Stephen McManus makes a clearance.
Centre by Justin Hoyte, Daniel Fox manages to make a clearance. Effort on goal by Nicky Bailey from outside the penalty box goes harmlessly over the bar.
Assist on the goal came from Richard Lambert.
0:40 Goal scored
Goal! - Billy Sharp - Middlesbro 0 - 1 Southamp'n Billy Sharp scores a goal from close in low into the middle of the goal. Middlesbrough 0-1 Southampton.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.