Steven Bergwijn's early opener was canceled out by an own goal from Sergio Reguilon and then a strike from Ollie Watkins sealed the victory for the visitors. The win opened the door for West Ham to climb above Spurs in sixth place.
The Lilywhites were lackluster for most of the match and, despite keeping possession, never seemed likely to build on their early lead.
It's not the best way to end their season on home soil, but Spurs must regroup ahead of the final matchday. Another setback against the top-four chasing Leicester City might rule them out of European football altogether.
Here are the player ratings for Tottenham Hotspur:
Hugo Lloris - 7/10
Lloris could've produced stronger hands for both goals, although he tried his best. The Tottenham Hotspur custodian nearly conceded a penalty early on for bringing down Watkins inside the area, but was generally good between the sticks.
Japhet Tanganga - N/A
Tanganga struggled to exert his influence on the match before sustaining a bad knee injury, which is likely to keep him out for a lengthy period.
Toby Alderweireld - 7/10
The only bright spot in a tumultuous defense. Alderweireld made some important challenges in the second-half when Villa pushed forward, and completed all three of his tackles.
Eric Dier - 6/10
Another horrific display from Dier, who looked to be in no man's land and came a cropper for Watkins' goal too. His only meaningful contribution in the match was a late block on the Villa striker to deny him a second goal.
Sergio Reguilon - 5/10
Reguilon was an unmitigated disaster today. He scored an awful own goal which brought Villa level, and twice lost possession in the build-up to their second goal.
Harry Winks - 6/10
Winks has seldom impressed this season and he produced no great shakes today either. His passes were mostly sideways and struggled to break down Villa.
Pierre-Emile Hojbjerg - 6/10
Jack Grealish and John McGinn knocked the daylights out of Hojbjerg, who too was below-par. His passing, in particular, was atrocious, as Villa constantly intercepted them.
Steven Bergwijn - 7/10
The Dutchman deserves credit for putting Tottenham Hotspur in front with a well-taken effort, though his influence faded in the match and was also denied by Emiliano Martinez twice in the second-half.
Dele Alli - 5/10
Alli's chances of playing at the Euros are slim and he isn't doing himself any favors by dropping stinkers like this. The Englishman struggled to get himself involved in the attack and looked lost when on the ball.
Heung-min Son - 6/10
Spurs were so bad that even Son couldn't save them today, and he himself endured a difficult outing. He was sloppy in possession and largely kept under wraps by Villa's defense.
Harry Kane - 6/10
Kane helped create the opportunity for Bergwijn to score the opener but that was the only highlight of his game. The striker looked subdued otherwise and seems to have played his last game at the Tottenham Hotspur stadium in a Spurs jersey.
Gareth Bale - 6/10
Bale received a rousing reception from the Tottenham Hotspur fans when he was about to come on and created a couple of half-chances in the game. But he wasn't really a direct threat to the Villans.
Tanguy Ndombele - 7/10
He brought more urgency and guile to Tottenham Hotspur's midfield and it felt like the game would've taken a different course had Ndombele started.
Matt Doherty - 6/10
The former Wolves defender threw himself into the thick of things and made sure there was no squeaky bum time in Tottenham Hotspur's half.