Robbie Keane marked his 200th Tottenham appearance with a goal to set the hosts on the way to a narrow win that sealed them fifth spot and a Uefa Cup place.
Keane volleys home the opener to set Tottenham on their way
The Irishman turned delightfully in the box to volley Jermaine Jenas' clipped pass into the net for the opener.
And Dimitar Berbatov notched his 23rd of the season when he slammed home.
Emile Mpenza's header reduced the arrears and City threatened a leveller, but Jermain Defoe should have sealed it late on only to see his penalty saved.
The victory brought huge cheers from the home crowd, who delighted in their club matching last season's league finish, but City will rightly feel aggrieved at not getting anything from a game they dominated at times.
Tottenham certainly started the brighter, Aaron Lennon going close to an opener when he cut inside the box and shot straight at Andreas Isaksson.
And a fine passing move brought them their first minutes later, Berbatov and King combining well to find Jenas, who clipped a delightful ball over the top which Keane swivelled under and volleyed home.
City claimed offside but replays suggested Keane had been kept marginally onside by Nedum Onuoha at right-back.
However, as is so often the case for a team playing without the pressure of needing a result, the visitors were proving obstinate opposition.
With Stephen Ireland and Michael Johnson pressing well in midfield, only a superb reaction Paul Robinson save from Darius Vassell's snap-shot kept Spurs ahead.
It was not long before Tottenham made it two, though, as Berbatov latched onto Lennon's fine dummy, bundled his way into the box and slammed low into the near corner.
It should have brought about a procession for Spurs, who were playing some fantastic football at times, but City deservedly reduced the deficit before half-time when Mpenza headed Hamann's precise cross home totally unmarked from six yards.
Keane and Berbatov again proved the difference for Tottenham
And it should have been 2-2 moments later, Mpenza forcing Robinson into a sprawling save from the angle and Johnson heading the rebound over with the goal at his mercy.
Any thoughts that Spurs would emerge from half-time a more secure outfit were dispelled in the opening exchanges as City upped the tempo.
With Mpenza causing the home defence problems, the visitors pinned Spurs back in their own half as the likes of DaMarcus Beasley and Ireland dominated possession.
And Robinson again proved Spurs' saviour on the hour mark when Beasley rose highest to send a looping header towards the top corner that the England number one tipped over the bar on the stretch.
Spurs boss Martin Jol reacted by replacing the tired Lennon with Steed Malbranque and it almost had the desired effect late on, only for Dunne to slide Berbatov's low cross away with Keane looming.
It should have been 3-1 late in the piece after Dunne was harshly adjudged to have shoved Didier Zokora - the initial contact was outside the box - but substitute Defoe's tame penalty was saved and he blazed the rebound over.
It mattered little, though, as Spurs saw out the closing minutes without alarm to secure victory and £7,738,000 in prize money for their fifth-placed finish.
Tottenham boss Martin Jol:
"We are absolutely delighted and rightly so. For this club to finish fifth two season on the trot is a big achievement.
"Credit to Manchester City, they came at us and never gave up. This was our third game in six days and they pressed us really well, but we had some heroes out there and our quality told.
"We are fifth again and we are celebrating. This club wants to be top six, in Europe every season, and we've done that. Now our aim is to get a trophy because that is what we deserve.
"As for Dimitar Berbatov - the answer is very clear. Of course he will be here next season. He's got a very long, very good contract. He's a sensitive lad, he loves the fans, they love him and he's extremely happy here."
City manager Stuart Pearce:
"We did not deserve to lose that. We stuck in, were resilient and did brilliantly away from home to be honest. Not to mention the fact that both Spurs goals were offside if you ask me.
"We created chances but, much like the whole season, we've just not had the goals in us. We need to go out and make sure we address that during the summer.
"We're possibly on the onset of a takeover and this club needs investment. There will be speculation about me and my players, of course, but that's football."
Tottenham: Robinson, Chimbonda, Dawson, King, Gardner, Lennon (Malbranque 75), Jenas, Zokora, Tainio, Keane (Defoe 81), Berbatov.
Subs Not Used: Cerny, Huddlestone, Assou-Ekotto.
Goals: Keane 10, Berbatov 32.
Man City: Isaksson, Onuoha, Dunne, Distin (Hamann 28), Jordan, Vassell, Jihai, Johnson, Ireland, Beasley (Samaras 81), Mpenza.
Subs Not Used: Weaver, Dickov, Laird.
Goals: Mpenza 40.
Ref: S Bennett (Kent).