A quickfire double before half-time saw Chelsea inflict a 2-0 defeat on Wolverhampton Wanderers to allow Tottenham Hotspur to clinch sixth spot.
Tottenham managed a 1-1 draw with Crystal Palace and move ahead of Wolves on goal difference.
Mason Mount struck the first for Chelsea with a sublime free-kick but Wolves were furious with referee Stuart Atwell’s decision to award it in the first place.
Pedro Neto was deemed to have fouled Marcos Alonso on the edge of the box but replays show the Portuguese winger connected with the ball.
And Wolves crumbled to concede a second to Olivier Giroud minutes later as the striker rounded Rui Patricio to slot home into an empty net.
Nuno Espirito Santo’s side now need Chelsea to beat Arsenal in next week’s FA Cup final to seal their passage into the Europa League qualifying rounds once more.
Wolves still have a route into the Champions League, but they will need to win the Europa League in Germany next month.
Here are our ratings from Stamford Bridge:
Rui Patricio 6
Patricio didn’t stand a chance with Mount’s free-kick and was left exposed one-v-one with Giroud for Chelsea’s second. Other than that, he didn’t have a lot to do.
Willy Boly 6
Boly started really well and thwarted a number of Chelsea’s attacks, and blocked superbly after Alonso had found space on the left to whip a low cross in.
But the first goal killed the belief within Wolves’ players and energised Chelsea’s attack, who gave Boly and Co countless problems from minute 46 and beyond.
Conor Coady 5
Marshalled the defence well in the opening exchanges and looked to have led Wolves to a first half clean sheet before a chaotic few minutes.
Coady had no part in the first goal but he should have cleared ahead of Giroud before the Frenchman scored Chelsea’s second.
Wolves’ frustrations with Attwell came close to boiling over in the second half with Coady one of several players left bemused by the referee’s award of another Chelsea free-kick.
Romain Saiss 6
Saiss was a little rash in possession but defended well enough for the most part.
Matt Doherty 6
Started brightly and skipped inside Antonio Rudiger on the byline but couldn’t pull the ball back to a teammate in the middle.
The Irishman was sacrificed early in the second half as Nuno made a triple substitution.
Leander Dendoncker 6
Restored to midfield after an easy night’s work in defence against Palace on Monday. This was anything but comfortable for Dendoncker though with Chelsea’s midfield, along with inside forwards Mount and Pulisic, pressing Wolves’ midfielders relentlessly.
Dendoncker stuck at it but some of Chelsea’s play, particularly through Matteo Kovacic, was outstanding.
Ruben Neves 6
Wolves’ number eight tried to make things happen and rarely gave the ball away in midfield, but this was far from vintage Neves.
In truth, Chelsea’s press was superb and Neves and Dendoncker couldn’t live with it at times.
Jonny Otto 5
Jonny struggled up against Reece James and was dispossessed far too often and far too easily. It was no surprise to see Vinagre replace him early in the second half.
Pedro Neto 5
Neto was involved in the biggest talking point of the game. He was adjudged to have fouled Alonso on the edge of the box following a Chelsea corner and Mount buried the free-kick to get the ball rolling for the hosts.
Wolves’ players were furious with Attwell’s decision and Neto himself turned away in disbelief with replays showing that he got a chunk of the ball.
Neto struggled to get involved in an attacking sense with Wolves offering very little to threaten Chelsea’s goal in the opening 45 minutes.
Raul Jimenez 5
Jimenez looked like a man who has been awake all week tending to a newborn baby. He wasn’t the only one who failed to impress and he wasn’t helped by a nasty whack to the head following a collision with Kurt Zouma.
Diogo Jota 5
Jota improved after a very sluggish start at Stamford Bridge to pose Wolves’ biggest threat in the second half. Needs to improve to keep his place for the game with Olympiakos.
Adama Traore (for Neto, 46) 6
Looked very lively after he came on with one brilliant run through Chelsea’s midfield but his impact didn’t last after he was moved to wing-back.
Ruben Vinagre (for Jonny, 58) 5
Barely got forward on Wolves’ left with Chelsea controlling the play in the second half.
Joao Moutinho (for Neves, 58) 6
Added a little bit of bite to Wolves’ midfield but the game was already gone.
Daniel Podence (for Doherty, 58) 6
Tried to give Wolves a spark but Chelsea defended well against him.
Bruno Jordao (for Jota, 84) N/A
A brief cameo for his Premier League debut.
Not used: Ruddy, Buur, Kilman, Gibbs-White