Nottingham Forest kept their hopes of UEFA Champions League qualification alive with a battling 2-1 victory over West Ham United at the London Stadium.
Forest entered Sunday's match knowing a defeat would end their hopes of a top-five finish, but Morgan Gibbs-White gave them an early boost by pouncing on Alphonse Areola's 11th-minute mistake.
Gibbs-White dedicated his goal celebration to striker Taiwo Awoniyi, who underwent abdominal surgery this week, and Forest looked to be cruising to victory when Nikola Milenkovic made it 2-0 in the 61st minute.
A stunning volley from West Ham forward Jarrod Bowen teed up a nervy finish for Forest, but the visitors clung on through 16 minutes of stoppage time, during which their goalkeeper Matz Sels made a crucial save to thwart Niclas Fullkrug.
Forest stay seventh but have the same number of points as Manchester City and only one fewer than Newcastle United (ahead of their Sunday match at Arsenal), Aston Villa and also Chelsea, whom Nuno Espirito Santo's side face on the final day in a showdown for a top-five place.
How the match unfolded
Both goalkeepers were worked in an eventful start. Just 68 seconds had passed when Sels made a fingertip save from Tomas Soucek's header, then Gibbs-White volleyed at Areola from point-blank range.
Areola also beat away a drive from Chris Wood, but the West Ham goalkeeper was at fault for Forest's opener. He got nowhere near enough power on his pass towards Guido Rodriguez, allowing Gibbs-White to steal possession and finish.
Forest ended the first half strongly as Wood had two chances, nodding against the outside of the post from a corner ad then drawing a sprawling save from Areola.
The visitors had breathing room in the 61st minute as Milenkovic's fortuitous touch helped Anthony Elanga's free-kick into the far corner. The goal was finally confirmed after a VAR review for offside that was delayed by communication issues.
West Ham toiled until the 86th minute, when Bowen took a sensational touch with the outside of his boot before sending a thunderous volley past Sels.
That set up a tense finale and West Ham almost equalised deep in stoppage time, but Fullkrug's powerful header was pushed away by Sels.
West Ham's bubble burst
West Ham have endured an uninspiring season, but they bounded into this fixture off the back of a 2-0 win over Manchester United at Old Trafford and were intent on giving a couple of departing defenders a happy send-off.
Aaron Cresswell and Vladimir Coufal started their final home games for the club after it was confirmed they will leave as free agents, and the latter was West Ham's outstanding player in the first half.
After providing a pinpoint delivery for Soucek's early chance, Coufal almost caught Sels out with a deflected effort from the right side of the box, which had to be turned around the near post.
But West Ham – who have been tasked with playing out from the back more often under Graham Potter – were masters of their own downfall when Areola gifted Gibbs-White the opener.
Against a team set up to absorb pressure and defend their penalty area, West Ham lacked the energy to go through the gears, and even the half-time boos from the home fans were half-hearted.
Out of nowhere, Bowen ensured a grandstand finale with one of the best goals of the season, flicking the ball into the air with the outside of his left boot then thumping home.
But it was a case of too little, too late for the Hammers, who will hope to finish an underwhelming campaign on a high against relegated Ipswich Town next week.
Forest stay in the hunt
Forest confirmed European qualification last week, but their bid to take one of the five Champions League places available via the Premier League was hanging by a thread after they only drew with Leicester City.
Nuno's team received a couple of positive updates ahead of travelling to London, though. Awoniyi remains under observation as he recovers from abdominal surgery, while centre-back Murillo returned to the team having missed the Leicester draw.
After an open start, Forest were simply too slick for their plodding hosts. Gibbs-White was at the centre of everything positive about their play, and his relentless pressing was rewarded with one of the easiest goals of his career.
Gibbs-White – who held up Awoniyi's shirt after scoring – was later among a host of Forest players trying to claim a touch for their second goal, though nobody was taking it away from towering defender Milenkovic.
Forest are still outsiders for the top five, given they will enter the final day one point behind Villa and Chelsea – who they will welcome to the City Ground in a blockbuster match.
Man City and Newcastle could move out of reach by then but a win over Chelsea would guarantee Forest climb at least one place, and they would then need just one more rival to slip up in order for them to qualify for the Champions League. Stranger things have happened.
Club reports
West Ham report | Forest report
What the managers said
Graham Potter: "The effort was there, the application was there in the game. We're playing a good team, fighting for Champions League. We started well with an error we didn't need to make but sometimes that happens."
Nuno Espirito Santo: "We started really well. In previous games a lot of bad things happened to us but today was not the case. Today we pressed good, got a good goal, started well in the second half, on the front foot. Generally a good performance.
"The players worked hard to put West Ham under pressure."
Match officials
Referee: Sam Barrott. Assistants: Wade Smith, Akil Howson. Fourth official: Matt Donohue. VAR: Darren England. Assistant VAR: Mark Scholes.
WHO'S GOING TO BE YOUR
MAN OF THE MATCH?
Vote at Full-time