Carlton Morris scored a controversial penalty as Luton came from behind to beat Middlesbrough 2-1 in the Sky Bet Championship.
In what has the potential to be the Championship play-off final at the end of next month between the two sides likely destined for third and fourth, it was Boro who struck first at Kenilworth Road as Cameron Archer scored just before the break.
Luton hit back after half-time, however, with Tom Lockyer and Morris' penalty - the striker scoring from the spot after he seemed to deceive referee Graham Scott into thinking he had been brought down by Boro goalkeeper Zack Steffen - turning the game on its head to seal the victory.
It moved Luton four points behind Sheffield United with two games to go - although the Blades face West Brom on Wednesday knowing a victory will be enough for them to secure promotion to the Premier League. The Hatters are also now four points clear of Boro in fourth.
How Luton hit back to beat Boro
It was a relatively tame first half between two sides who had already booked their spot in the play-offs. Michael Carrick's Boro team selection suggested a manager thinking of the battles ahead, with top goalscorer and Championship Player of the Season Chuba Akpom left on the bench, along with midfielder Hayden Hackney.
But it did not stop Boro taking the lead on 40 minutes, as Matt Crooks played a one-two with Dan Barlaser and then launched a ball over the top for Archer - who ghosted past the onrushing Luton goalkeeper Ethan Horvath, before rounding Sonny Bradley and steering the ball into an empty net.
Luton came out far better in the second half and on 49 minutes they were level as an Alfie Doughty corner reached the head of Lockyer, and he headed in off the far post.
There was then controversy surrounding the winner. A quick turnover saw Morris in on goal and he went over as he tried to shift the ball past Steffen. The Boro goalkeeper did not seem to touch him, but the referee still pointed to the spot - and Morris stepped up to roll the ball into the bottom-right corner, with Steffen going the other way.
The managers
Luton's Rob Edwards:
"First of all Middlesbrough are a really good team. How Michael has got them playing and winning has been very impressive. I know they made some changes but we knew it was going to be a really tough night.
"I was pleased with the second half. First half we were a bit passive, which isn't like us at home. We pride ourselves on being aggressive and on the front foot here. We deserved to be 1-0 down. But the reaction was great."
Middlesbrough's Michael Carrick:
"You don't need me to tell you it's not a penalty. Not even close in our eyes. I'm bitterly disappointed with that, but I'm hugely proud of the players. I thought we were fantastic. But the penalty turns the game and puts them in their favour.
"I do wonder sometimes with referees coming down from the Premier League who are used to VAR, then they have to come down and make a big decision like that. In the grand scheme of things it doesn't really affect our season luckily, but it's more moving forward to the play-offs or whatever, and then they haven't got the VAR and they have to make that decision on their own. It's whether they're used to it or not.
"I'm not accusing anyone of anything. But it's something to look at because it's a massive difference to have VAR or not."
Player of the Match - Tom Lockyer
10 IN 10 ON SKY SPORTS! - 10 live Championship games in 10 days
Saturday April 22
Sunday April 23
Monday April 24
Tuesday April 25
Blackburn vs Burnley, 8pm - Live on Sky Sports Football & Sky Sports app
Wednesday April 26
Sheffield United vs West Brom, 8pm - Live on Sky Sports Football & Sky Sports app
Thursday April 27
Rotherham vs Cardiff, 8pm - Live on Sky Sports Football & Sky Sports app
Friday April 28
Blackpool vs Millwall, 8pm - Live on Sky Sports Football & Sky Sports app
Saturday April 29
West Brom vs Norwich, 5.30pm - Live on Sky Sports Football & Sky Sports app
Sunday April 30
Cardiff vs Huddersfield, 12pm - Live on Sky Sports Football & Sky Sports app
Monday May 1
Blackburn vs Luton, 5.30pm - Live on Sky Sports Football & Sky Sports app