Chelsea squeezed into the top four spots despite losing 2-1 at Aston Villa, helped by London rivals Tottenham, who beat Leicester on a dramatic final day.
Chelsea jumped in and out of the Champions League places over a topsy-turvy 90 minutes at Villa Park, despite being haunted by their former player Bertrand Traore on Sunday.
Chelsea dominated the early stages as they camped in Villa's defensive third, but the hosts eventually took the sting out and went ahead through former Chelsea man Bertrand Traore's near-post effort from a low, well-worked corner (43).
With Leicester and Liverpool also winning at the time, Chelsea were already fifth by the time Anwar El Ghazi converted a penalty to make it 2-0 after Traore had been tripped by Jorginho (52).
Ben Chilwell clawed one back for Chelsea with a far-post finish (70), but Spurs equalised at Leicester to move the Blues back into fourth, and then took the lead to cement their spot, eventually winning 4-2.
Cesar Azpilicueta was dismissed late on for striking Jack Grealish in the face, but the final placing is another mark of progress for Chelsea under Thomas Tuchel. Villa, finishing 11th, have ended a fine season with back-to-back wins over so-called 'big six' sides.
- Final Premier League table: Chelsea fourth, Villa 11th
- How the teams lined up | Match stats
- Get Sky Sports | Get a Sky Sports Pass
- Live football on Sky Sports
Aston Villa: Martinez (8), Konsa (7), Hause (7), Mings (7), Targett (7), Nakamba (8), McGinn (7), Traore (7), Grealish (7), El Ghazi (7), Watkins (7)
Subs: Chukwuemeka (6), Ramsey (NA)
Chelsea: Mendy (5), James (6), Azpilicueta (5), Rudiger (6), Silva (6), Chilwell (7), Kovacic (5), Jorginho (5), Mount (5), Pulisic (5), Werner (5)
Subs: Arrizabalaga (5), Ziyech (6), Havertz (5)
Man of the match: Marvelous Nakamba
How Chelsea had to rely on Spurs leg-up for CL spot
Up against 10,000 returning home fans and a Villa side looking bright again with Grealish back, the visitors looked for an early blitz and piled on the pressure.
They had nine shots on Villa's goal in the first half an hour, going closest through Timo Werner's glanced header wide, and Mason Mount's skewed effort from 10 yards as the ball felt kindly to him from Azpilicueta's centre.
With Leicester ahead against Spurs, and Liverpool beating Crystal Palace, Chelsea were momentarily fifth and goalless, with Villa fighting back to get a foothold in what had been a one-sided contest.
John McGinn went close, winning the ball high up the pitch and curling just wide from 20 yards, and while Chelsea had good news from their London rivals Tottenham equalising at Leicester to move them fourth, Villa soon went ahead via a familiar face.
Traore, who made just 16 appearances for Chelsea between 2014 and 2017, put the hosts ahead from a clever corner routine; although he didn't connect properly with Matt Targett's low corner, Traore's weak effort squeezed in off the underside of the bar.
Chelsea were still fourth, now relying on results elsewhere, but things got worse early in the second half. Moments after Christian Pulisic's mis-hit at the back post deflected off Matt Targett and dropped agonisingly wide, Villa had a chance to double their lead as Traore was brought down in the box attempting to skip past Jorginho.
With Leicester now 2-1 up against Spurs, Chelsea were already fifth by the time El Ghazi stepped up to send half-time sub Kepa Arrizabalaga the wrong way for his 10th of the season, and the visitors needed a miracle.
The chances didn't stop coming for them, however. Mount struck just wide moments later, Timo Werner had a goal disallowed for an Azpilicueta offside, and sub Kai Havertz diverted over at the far post from Chilwell's wicked cross.
Chelsea then halved the deficit through Chilwell's far-post finish from Pulisic's cross, despite Martinez's best attempts to claw it off the line, and with Spurs equalising at Leicester, Chelsea were fourth.
N'Golo Kante misses out due to injury meaning Kovacic returned to the Chelsea midfield in the only change from Tuesday's 2-1 win over Leicester.
Villa were completely unchanged from that impressive 2-1 win at Spurs in midweek; Grealish started again in a central position, while Ezri Konsa was at right-back.
They huffed and puffed for a leveller - Azpilicueta fired just high and wide, while Martinez pulled off a brilliant save from Chilwell - but Chelsea couldn't find the second and ended the game with 10 men as Azpilicueta struck Grealish in the face after being challenged by the Villa man.
It was messy and nervy, but it was all smiles from both sides in the end as a bizarre helping hand from Spurs gave their bitter rivals a leg-up into the top four.
What the managers said
Villa boss Dean Smith: "It was the ideal way to end the season, we came up against a very good team today and gave everything for the shirt. Disappointed we did not get the record of clean sheets for Emiliano Martinez, who still holds it level with Brad Friedel. He made some good saves and for all the possession Chelsea had, he made comfortable saves. He has been a magnificent signing and is well respected in the dressing room.
"We all have injuries, we lost Jack Grealish and we have had to deal with it. I had an expected goals table of finishing ninth and we are there abouts. Our target is to progress again and we have players here more than capable of competing with the best teams in the league. When Grealish comes out of the team we have to be more creative."
Chelsea boss Thomas Tuchel: "Today, it was the story of our season. We needed many clean sheets to overcome a lack of composure and precision. Today, we concede two goals out of nothing and from set-pieces. We made it hard to come back."
Happy with top four? "Tomorrow a lot. Today, a loss never feels good. But we did the main target, there is nothing to worry about now, nothing to regret. It was a very difficult objective to meet, we did it, so huge congratulations on the effort and performances and focus.
"We are still a young team, still a lot of players fighting for the first trophy, fighting for the first time in big matches, you can see that, obviously. This is the way, we need to learn and improve while we do it. We did it, and we will arrive now in Porto with full confidence."
On Edouard Mendy's rib injury: "We will do everything so he is in between the posts on Saturday."
- Chelsea suffered their first Premier League away defeat under manager Thomas Tuchel, in what was his ninth such game in charge (W6 D2).
- Aston Villa's Bertrand Traoré became the 25th different player to score a Premier League goal against Chelsea having previously played for the Blues in the competition. No team has had more former players score against them in the Premier League (Spurs also 25).
- Chelsea's Ben Chilwell registered his eighth goal involvement in the Premier League this season (3 goals, 5 assists) - among defenders, only Trent Alexander-Arnold has been involved in more (9).
- Jorginho finished the season as Chelsea's highest scorer in the Premier League with seven goals - all from the penalty spot. It's the Blues' lowest-scoring top-scorer in a top-flight campaign since 1974-75 (Ian Hutchinson, 7).
What's next? Euros, transfer window, 2021/22 key dates
Euro 2020 kicks off on Friday June 11 - just 19 days after the conclusion of the 2020/21 Premier League season - and runs until Sunday July 11.
The 2021/22 Premier League campaign will start on the weekend of Saturday August 14 - 34 days after that Euro 2020 final at Wembley.
Clubs will be able to start planning for the new term when the top-flight fixtures are released at 9am on Wednesday, June 16 but transfer business can start in earnest before then, with the summer transfer window opening on Wednesday June 9.
- 2021/22 season - all the key dates
- 2021/22 fixture release dates
- Summer transfer window 2021 - what you need to know
- Premier League kits for 2021/22
- Euro 2020 - full fixtures and schedule
The 2021/22 Championship season begins a week before the top-flight one on the weekend of Saturday August 7. All Sky Bet EFL fixtures will be announced at 9am on Thursday June 24.