George Boateng's first half strike handed Middlesbrough three precious points and they have to go into next Sunday's final round of fixtures as favourites to take the seventh and the final UEFA Cup spot.
However, Manchester City's victory at Villa on Saturday means they can also make it up to seventh - and they face Boro at home next Sunday with the added bonus of having the best goal difference of the three of us.
If they beat Boro and we beat Blackburn, all three teams will be on 54 points and the goal difference comes into it.
Back to the Riverside and there could be no complaints as to our possession or effort but we struggled to break down a Boro defence marshalled superbly by Gareth Southgate.
Indeed, Mark Schwarzer barely had a save to make all afternoon as our play tended to break down on the edge of the 18-yard line.
At the other end, Boro hit the crossbar in the first half and went close again via the impressive Stewart Downing and they broke countless times in the second half without adding to their tally.
Martin Jol made two changes from last week's win against Villa - Radek Cerny replaced injured keeper Paul Robinson and Jermain Defoe started up front for Robbie Keane alongside Fredi Kanoute.
We had the majority of possession in the first half - Kanoute's link play outstanding - but struggled to break down Southgate and co.
Indeed, the home side had all the chances and Nemeth had already struck the woodwork when they took the lead on 11 minutes. It actually came from our attack as a long ball released Zenden down the left. Nemeth was in acres of space in the middle and Zenden dug out the cross only for the striker's control to let him down. However, he had time to retrieve the ball and roll it back for the onrushing Boateng whose drive clipped off King and left Cerny helpless.
We completely bossed the next 20 minutes without really looking like scoring, Davis joined in attacks regularly while Kanoute and Defoe's movement pulled Boro defence around but we didn't quite get the run of the ball.
The next effort on goal was Parlour's dribbler after 33 minutes and Davis had a shot blocked by Ehiogu after turning Boateng inside out a minute later.
But it was Boro who almost doubled their lead after 39 minutes when Edman failed to deal with Schwarzer's huge kick, his clearance fell kindly to Downing who beat Dawson and drilled just wide.
The second half was end-to-end with Boro happy to break as we pushed forward.
Once again, clear-cut chances were hard to come by although corners from Reid and Carrick caused all sorts of panic and we came closest when King timed his run to meet Reid's driven free-kick from the right only to flick his header just over.
That was after 62 minutes and the rest of the game followed a pattern of us trying desperately to break through and Boro catching us on the counter.
Robbie Keane and Mido were both thrown on as we searched for that goal but on the break Hasselbaink, twice, Downing and Nemeth all tried their luck but either fired straight at Cerny or missed the target altogether - Hasselbaink the biggest culprit in injury time.
The final action summed it all up - our possession, the killer ball blocked, Boro break away and Nemeth curling inches wide. The final whistle blew before Cerny could restart - but it's not all over quite yet.
GUIDE TO THE ACTION
2mins: WOODWORK. Boateng won 50-50 cruncher with Davis, Nemeth picked up loose ball, curler from 25 yards bounced back off top of crossbar, King headed to safety.
5mins: Kanoute reached byline, stood up cross that Parnaby did well to turn away.
6mins: YELLOW. Davis for foul on Zenden.
10mins: Downing curled 20-yard free-kick over after Davis 'foul' on Zenden.
11mins: GOAL. Zenden break from our attack, Nemeth free in the box but didn't control Zenden's cross, retrieved ball and laid it back to Boateng whose 20-yard shot deflected in off King.
Middlesbrough 1, Spurs 0
18mins: YELLOW. Carrick for failing to retreat at free-kick.
33mins: Parlour 30-yarder straight at Cerny. We've had long spells of possession but struggled so far to break Boro down.
34mins: Davis tricked his way past Boateng, left byline, opted to shoot and blocked by Ehiogu.
38mins: YELLOW. Southgate for foul on Kanoute.
39mins: CLOSE. Schwarzer's huge clearance caused problems, Edman cleared straight to Downing who beat Dawson and flashed low drive just wide.
45mins: Davis ran onto Kanoute's chest down, volleyed over.
Half-time: Middlesbrough 1, Spurs 0
51mins: Reid's corner led to almighty scramble, Dawson, King all there but Boro scrambled away.
54mins: Cerny good hands, dived low to take Parnaby's cross with Hasselbaink waiting.
58mins: SUB. Keane for Defoe.
60mins: Carrick's corner caused more panic in Boro defence, ball cleared to Edman who chipped pass over top for Keane, instant volley over shoulder straight at Schwarzer.
61mins: Parlour down right played ball inside to Nemeth, half-chance, straight at Cerny.
62mins: CLOSE. Reid drove in free-kick from right, King run across front post, flicked header, flew over.
66mins: Carrick inches away from finding Keane in front of goal withsuperb pass as Boro appealed for foul on Hasselbaink.
70mins: SUB. Mido for Reid.
70mins: YELLOW. Mido for foul on Parnaby.
74mins: SAVE. Boro break from our attack - pattern of the game now - and Cerny did well to palm out Hasselbaink's drive.
75mins: Downing arrowed drive comfortable for Cerny.
78mins: SUB. Doriva for Zenden.
83mins: Another Boro break, Hasselbaink wrestled away from Dawson, tried to pass to Nemeth, Dawson back but block forced Cerny into save on line.
84mins: SUB. Ziegler for Kanoute.
87mins: Flowing Boro move ended with Dowing cutting ball back for Hasselbaink, tried low curler saved by Cerny.
89mins: Keane tried flick up and volley free-kick, sailed over.
Injury time: MISS. Queudrue fed Downing, another clever cutback to Hasselbaink, 16 yards out, blasted over.
Injury time: Nemeth cut in from left, curler just wide with Cerny at full stretch.
Full-time: Middlesbrough 1, Spurs 0
Middlesbrough: Schwarzer, Queudrue, Ehiogue, Southgate, Boateng, Nemeth, Parlour, Hasselbaink, Downing, Parnaby, Zenden (Doriva, 78). Subs: Knight, Reiziger, Cooper, Morrison.
Spurs (4-4-2): Cerny; Kelly, King, Dawson, Edman; Davies, Carrick, Davis, Reid (Mido, 70); Kanoute (Ziegler, 84), Defoe (Keane, 58). Subs: Fulop, Bunjevcevic.
Our hopes of qualifying for Europe took a blow on Teeside but it will still all go to the final game of the season next weekend.