Robbie Keane struck late to keep our European dream alive with a 2-1 win against City at the Lane on Saturday.
That dream was slipping away with five minutes remaining as we were being held by City and Fulham were winning at Newcastle.
However, Jermain Defoe whipped in a cross from the right, substitute Fraizer Campbell went down under Micah Richards' challenge and referee Mark Halsey pointed to the penalty spot.
Keane stepped up and sent his Republic of Ireland team-mate Shay Given the wrong way for the winner.
Fulham took the points at St James' Park so it will be a straight fight between ourselves and the Cottagers on the final day of the season next Sunday for that UEFA Europa League place. Fulham have a two-point advantage and face Everton at home while we travel to Anfield.
With a six-successive win at the Lane and the club's all-time defensive record for a home league season broken - City's goal made it just 10 conceded, beating the previous mark from 1919-20 - it was the perfect finale in front of another packed house.
City were indebted to keeper Given as we bossed the early exchanges.
His first save of three in that spell was arguably the best as he turned around Defoe's precision sidefoot from the edge of the box, just four minutes on the clock.
The second save was similar as Roman Pavlyuchenko let fly from 25 yards after good work from Luka Modric and Jermaine Jenas.
The third was more of a reaction as Ledley King climbed high over Vincent Kompany to power in a header from Tom Huddlestone's corner, Given blocked with his legs and the ball was cleared.
City began to settle and had their best spell midway through the half but it only produced a tame effort on the counter from Martin Petrov.
It wasn't long before play switched to the other end and this time Given was left helpless as we took the lead.
Jermaine Jenas led the break before sliding wide to Huddlestone who whipped in a magnificent cross from the right.
It only needed a touch and Defoe was the man to provide it, getting in front of Richard Dunne to convert from six yards with 29 minutes gone.
Keane had a couple of chances to double the lead as first he seemed taken aback when Dunne missed Benoit Assou-Ekotto's fine cross and then he glided between defenders to receive Huddlestone's delicious pass and looked to have done the hard work by controlling and shaping to shoot only to miss his connection.
The half ended with Huddlestone zipping a shot just wide from 25 yards.
We were forced into a change at half-time as Alan Hutton came in for the injured Jonathan Woodgate. Hutton went to right-back and Vedran Corluka shifted across to partner King.
City had the first chance of the half as Ireland sent Felipe Caicedo through centrally, the striker picked the right option to try and chip Gomes but didn't get enough on it.
The visitors made a double substitution on the hour with strikers Benjani and Valeri Bojinov replacing Caicedo and Petrov.
The change paid an immediate dividend as Bojinov scored the first opposition goal in the Premier League at the Lane since James Beattie netted for Stoke back on January 27.
Bojinov picked the ball up on the right and rolled into Ireland, he chipped a pass up to Benjani who nodded down to Bojinov, who had followed his initial pass and fired into the top corner. Cue stunned silence around most of the stadium.
Pavlyuchenko volleyed wide before Didier Zokora came on for Jenas in the 67th minute, Pavlyuchenko was soon replaced by Campbell.
The lively Bojinov had the next effort of note, latching onto Zabaleta's pass before hitting a low shot that Gomes parried and Hutton hammered clear.
With Fulham winning at Newcastle, the need for a winner was increasing as time ticked away. Modric managed to get away from Ireland and Bridge, only to lash just wide.
Then the key moment - Defoe's cross, Campbell bundled over and Keane made no mistake from the spot.
There was still time for one more City chance as Benjani nodded over from close range after Kompany headed on Zabelata's corner.
That would have ruined everything but after being bottom of the table earlier in the season, we can still finish seventh.
Spurs: Gomes; Corluka, Assou-Ekotto, King, Woodgate (Hutton, 46); Jenas (Zokora, 67), Huddlestone, Modric; Keane, Defoe, Pavlyuchenko (Campbell, 75). Unused subs: Cudicini, Bale, Chimbonda, Bentley.
Manchester City: Given; Richards, Onuoha, Dunne, Bridge; Kompany, De Jong; Elano (Zabeleta, 32) Ireland, Petrov (Benjani, 61); Caicedo (Bojinov, 61). Unused subs: Hart, Fernandes, Sturridge, Glauber.