Middlesbrough missed out on the play-offs with a defeat at Watford.
The visitors needed a win and Cardiff,
who won at Crystal Palace,
to lose in order to sneak into the top six.
Cardiff were trailing at one stage but Boro struggled to take their chances at Vicarage Road and went behind to a Chris Iwelumo effort.
A Marvin Emnes strike five minutes from time appeared to earn Boro a draw but Troy Deeney struck an 88th-minute winner for Watford.
Tony Mowbray's side started nervously, with a short backpass almost giving Iwelumo a clear sight on goal.
News of a Palace goal increased the urgency and tempo of the game - and Hornets goalkeeper Scott Loach denied Joe Bennett and Emnes.
An inspired Loach pushed a 12-yard Barry Robson effort around the post, and he excellently denied Faris Haroun - who failed to convert Justin Hoyte's cross from six yards.
Watford were mainly playing on the counter-attack - before Cardiff's comeback at Palace appeared to have a detrimental impact on Boro.
The visitors fell behind when Iwelumo flicked home a Deeney cross to give Watford the lead.
Both sides traded chances and Boro equalised when Emnes scored his 18th goal of the season by sending a shot into the top corner from 12 yards.
But Deeney touched home a Craig Forsyth cross with two minutes to go to seal the points.
Watford manager Sean Dyche:
"It's a fantastic way to end the season for all concerned, especially having been written off heavily before the season even started.
"It's fair to say myself had been written off after about 12 games but we ended up with not just a positive finish, but a positive run of form from a group of players that's developed considerably over the season."
Middlesbrough manager Tony Mowbray:
"I congratulate Cardiff on achieving the result they required [to get in the play-offs].
"I think today to lose is a little bit harsh. When you're in a position where you've got to win you gamble from a position of being 1-1 to try and get the three points.
"We lost trying to win but it didn't really matter, Cardiff got the job done.
"Ultimately over the course of the season we fell just short."
- 01 Loach
- 03 Dickinson
- 05 Taylor
- 12 Doyley
- 33 Nosworthy
- 04 Eustace Booked
- 19 Buaben
- 22 Murray
- 32 Hogg (Forsyth - 48' )
- 09 Deeney
- 10 Iwelumo (Mariappa - 89' )
- 13 Gilmartin
- 06 Mariappa
- 11 Forsyth
- 24 Whichelow
- 25 Garner
- 01 Steele
- 02 Hoyte
- 03 Bennett
- 06 McManus Booked
- 14 Williams
- 15 Hines
- 10 Bailey Booked
- 17 Robson
- 38 Haroun (McDonald - 58' )
- 09 Emnes
- 30 Jutkiewicz (Main - 58' )
- 29 McMahon
- 08 Thomson
- 18 Arca
- 07 McDonald
- 25 Main