Substitute Patrick Bamford scored a 96th minute equaliser as Middlesbrough twice fought back in a 2-2 draw against Ipswich Town at Portman Road.
Freddie Sears had earned the hosts an early lead that wasn’t cancelled out until Stewart Downing drove in low with nineteen minutes remaining.
But Martyn Waghorn then restored the earlier advantage from the penalty spot before Bamford headed a very late injury-time reply.
Having finished fifth in the table, Boro now take on Aston Villa in the play-offs.
Ex-Rangers forward Waghorn struck wide early on for the hosts and also glanced the outside of an upright, before Sears stole possession off Ben Gibson and located the far corner.
Boro responded with blocked efforts from Mo Besic, Ryan Shotton, George Friend and Jonny Howson, while Dani Ayala went close with the ball cleared off the line at a corner – and also headed over after the restart.
However, Darren Randolph denied both Waghorn and Cole Skuse, until Downing decisively fired a low equaliser through a crowded area.
Britt Assombalonga soon threatened another as keeper Bart Bialkowski reacted well, but it was Waghorn then converting an 83rd penalty after Gibson had caught Shane McLoughlin.
Midfielder Besic replied against the crossbar and a raised flag ruled out Ayala netting from the rebound; only for Jack Harrison’s late corner to be dramatically headed in by fellow substitute Bamford with time almost up.
Ipswich Town: Bialkowski, Carter-Vickers, Webster, Knudsen, Spence (Woolfenden 88), Connolly (Hyam 77), Skuse, Nydam (McLoughlin 76), Kenlock, Sears, Waghorn
subs (unused): Crowe, Gleeson, Morris, Cotter
Goals: Sears (8), Waghorn (pen 83)
Middlesbrough: Randolph, Shotton, Ayala, Gibson, Friend, Howson (Bamford 61), Clayton (Harrison 88), Besic, Traore, Assombalonga, Downing
subs (unused): Konstantopoulos, Fabio, Leadbitter, Cranie, Fry
Goals: Downing (71), Bamford (90)
Ref: D. Coote