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 Jutkiew'z (Main - 58' )
- 29 McMahon
- 08 Thomson
- 18 Arca
- 07 McDonald
- 25 Main
Live Text Commentary
Full Time The match has reached full-time.90:00 +4:18
Barry Robson delivers the ball, Header from close in by Scott McDonald misses to the right of the goal.90:00 +2:37
The referee penalises Lloyd Doyley for handball. Nicky Bailey restarts play with the free kick.90:00 +2:18
The ball is delivered by Troy Deeney.90:00 +1:31
Justin Hoyte takes a shot. Adrian Mariappa gets a block in.90:00 +0:17
Foul by Rhys Williams on Sean Murray, free kick awarded. Scott Loach takes the free kick.89:53
A cross is delivered by Nicky Bailey, Sean Murray manages to make a clearance.88:39 Substitution
Substitution Adrian Mariappa is brought on as a substitute for Chris Iwelumo.87:51
Assist by Craig Forsyth.87:51 Goal scored
Goal! - Troy Deeney - Watford 2 - 1 Middlesbro Troy Deeney gets on the score sheet with a goal from inside the penalty area to the bottom right corner of the goal. Watford 2-1 Middlesbrough.87:45
The ball is crossed by Craig Forsyth,87:26
Nicky Bailey crosses the ball, Martin Taylor makes a clearance.85:12
The ball is crossed by Joe Bennett.84:16
The assist for the goal came from Barry Robson.84:16 Goal scored
Goal! - Marvin Emnes - Watford 1 - 1 Middlesbro Marvin Emnes scores a goal from inside the penalty box to the top left corner of the goal. Watford 1-1 Middlesbrough.82:10
Troy Deeney has an effort at goal from just inside the box that misses to the left of the target.81:21
Chris Iwelumo gives away a free kick for an unfair challenge on Joe Bennett. Stephen McManus takes the free kick.79:58
The referee blows for offside. Direct free kick taken by Scott Loach.79:08
Chris Iwelumo gives away a free kick for an unfair challenge on Seb Hines. Jason Steele restarts play with the free kick.78:39
Free kick awarded for an unfair challenge on Craig Forsyth by Justin Hoyte. Sean Murray takes the direct free kick.
A cross is delivered by Justin Hoyte.77:43
Martin Taylor gives away a free kick for an unfair challenge on Scott McDonald. Barry Robson takes the free kick.75:01
Shot from just outside the box by Chris Iwelumo goes over the crossbar.74:33
Barry Robson takes a shot. Scott Loach makes a save.73:24
Nicky Bailey takes the free kick.73:24 Booking
Booking John Eustace goes into the referee's book.73:21
Joe Bennett fouled by John Eustace, the ref awards a free kick.70:28
Foul by John Eustace on Scott McDonald, free kick awarded. Barry Robson takes the free kick.69:42 Booking
Booking Nicky Bailey goes into the book for dissent.68:46
Assist by Troy Deeney.68:46 Goal scored
Goal! - Chris Iwelumo - Watford 1 - 0 Middlesbro A goal is scored by Chris Iwelumo from close range low into the middle of the goal. Watford 1-0 Middlesbrough.68:40
Centre by Troy Deeney,68:08
Chris Iwelumo takes a shot. Save by Jason Steele.67:18
Unfair challenge on Craig Forsyth by Curtis Main results in a free kick. John Eustace takes the direct free kick.65:32
Nicky Bailey challenges Sean Murray unfairly and gives away a free kick. Direct free kick taken by Sean Murray.65:03
The ball is sent over by Troy Deeney, save made by Jason Steele.64:20
Free kick awarded for a foul by Curtis Main on Carl Dickinson. Free kick taken by Scott Loach.61:48
The official flags Scott McDonald offside. Scott Loach takes the free kick.60:16
Sean Murray takes a outswinging corner from the right by-line played to the near post, Seb Hines makes a clearance.59:42
Corner taken by Sean Murray from the left by-line.59:19
Justin Hoyte concedes a free kick for a foul on Craig Forsyth. Direct free kick taken by John Eustace. Sean Murray takes a shot. Nicky Bailey gets a block in.57:46
Nyron Nosworthy challenges Scott McDonald unfairly and gives away a free kick. Barry Robson takes the direct free kick.56:45
Free kick taken by Scott Loach.56:45 Substitution
Substitution Curtis Main replaces Lukas Jutkiewicz.56:45 Substitution
Substitution Scott McDonald on for Faris Haroun.56:45
The referee blows for offside against Faris Haroun.56:03
Corner taken by Barry Robson from the left by-line played to the near post, Craig Forsyth manages to make a clearance.55:54
Barry Robson takes a shot. Blocked by John Eustace.55:07
Joe Bennett delivers the ball, Scott Loach makes a save.54:47
Centre by Faris Haroun, clearance by Lloyd Doyley.53:14
Justin Hoyte delivers the ball, Carl Dickinson makes a clearance.52:41
Corner taken by Barry Robson from the left by-line.52:08
Barry Robson takes a shot. Blocked by John Eustace.51:22
John Eustace gives away a free kick for an unfair challenge on Barry Robson. Barry Robson takes the free kick.50:21
Outswinging corner taken right-footed by Sean Murray, Seb Hines manages to make a clearance.48:52
Outswinging corner taken by Sean Murray.45:32
Free kick crossed right-footed by Sean Murray, Stephen McManus manages to make a clearance.45:32 Substitution
Substitution Craig Forsyth replaces Jonathan Hogg.45:32 Booking
Booking Booking for Stephen McManus.45:22
Jonathan Hogg fouled by Stephen McManus, the ref awards a free kick.45:01
The second half has started.45:00 +1:06 Half time
Half Time It is the end of the first-half.43:20
Troy Deeney is flagged offside by the assistant referee. Indirect free kick taken by Jason Steele.42:32
Prince Buaben produces a cross, Effort from inside the six-yard box by Chris Iwelumo goes wide left of the target.42:23
The ball is sent over by Carl Dickinson, Stephen McManus makes a clearance.41:40
Marvin Emnes takes a shot. Save by Scott Loach.41:06
Prince Buaben concedes a free kick for a foul on Joe Bennett. Free kick taken by Barry Robson.40:18
Corner taken by Barry Robson from the right by-line played to the near post, clearance by Troy Deeney.40:02
Centre by Justin Hoyte, Faris Haroun takes a shot. Scott Loach makes a save.39:36
Centre by Joe Bennett, clearance made by Lloyd Doyley.38:21
Nicky Bailey produces a right-footed shot from just outside the box that goes wide right of the target.37:35
Barry Robson takes a inswinging corner.36:46
Shot from just outside the box by Carl Dickinson misses to the right of the goal.36:16
Marvin Emnes concedes a free kick for a foul on Jonathan Hogg. Sean Murray takes the free kick.31:17
Carl Dickinson challenges Barry Robson unfairly and gives away a free kick. Direct free kick taken by Barry Robson.30:18
Barry Robson takes a inswinging corner from the right by-line played to the near post, Chris Iwelumo makes a clearance.30:07
Barry Robson takes a shot. Save by Scott Loach.28:56
Barry Robson concedes a free kick for a foul on Lloyd Doyley. Nyron Nosworthy takes the direct free kick.28:27
Jonathan Hogg produces a right-footed shot from a long way out which goes wide right of the goal.27:24
Unfair challenge on Rhys Williams by John Eustace results in a free kick. Nicky Bailey takes the direct free kick.26:20
Prince Buaben challenges Marvin Emnes unfairly and gives away a free kick. Marvin Emnes takes the free kick.24:46
Inswinging corner taken right-footed by Sean Murray from the left by-line, save made by Jason Steele.24:04
Jonathan Hogg crosses the ball, clearance by Seb Hines.23:32
The ball is sent over by Troy Deeney, Joe Bennett gets a block in.20:32
Justin Hoyte crosses the ball.18:55
Centre by Justin Hoyte, clearance made by Lloyd Doyley.18:10
Rhys Williams fouled by Sean Murray, the ref awards a free kick. Direct free kick taken by Jason Steele.16:28
Inswinging corner taken left-footed by Barry Robson, Marvin Emnes concedes a free kick for a foul on Scott Loach. Scott Loach takes the direct free kick.16:18
Marvin Emnes takes a shot. Scott Loach makes a save.15:18
Free kick awarded for a foul by Jonathan Hogg on Rhys Williams. Free kick taken by Seb Hines.13:56
Joe Bennett takes a shot. Save by Scott Loach.13:21
Inswinging corner taken left-footed by Barry Robson from the right by-line, John Eustace manages to make a clearance.13:13
Rhys Williams sends in a cross, clearance made by Nyron Nosworthy.12:09
The ball is delivered by Lloyd Doyley.10:16
Free kick awarded for an unfair challenge on Prince Buaben by Joe Bennett. Sean Murray takes the free kick.7:47
The assistant referee flags for offside against Troy Deeney. Jason Steele takes the free kick.7:10
Faris Haroun produces a left-footed shot from outside the penalty box and misses wide left of the target.4:23
Chris Iwelumo is ruled offside. Free kick taken by Jason Steele.3:47
Effort from 35 yards by Nicky Bailey missed to the right of the net.3:19
Free kick awarded for an unfair challenge on Marvin Emnes by Jonathan Hogg. Direct free kick taken by Nicky Bailey.0:55
Barry Robson fouled by Lloyd Doyley, the ref awards a free kick. Barry Robson takes the direct free kick.0:20
Stephen McManus fouled by Troy Deeney, the ref awards a free kick. Jason Steele takes the free kick.0:00
The match gets underway.
Live data and text provided by our data suppliers