After they were beaten by arch-rivals Manchester United a week earlier from two goals up when victory would have crowned them kings of England, then knocked out of Europe by Liverpool, some suggested that City were beginning to flag.
But Pep Guardiola’s side made a mockery of such talk to outclass a Spurs side unbeaten in the league since December.
Victory, sealed with goals by Gabriel Jesus, Ilkay Gundogan and Raheem Sterling, lifted them to 87 points from 33 games.
An unlikely defeat for Manchester United at home to bottom club West Bromwich Albion on Sunday would secure City’s third title in seven seasons but a win against Swansea City next week will be enough to put them out of reach.
“After 15 minutes I said we’d be champions, after what happened and we reacted,” said Guardiola, who will be on the golf course with his son when United play on Sunday.
“These guys are fantastic and awesome. What’s happened in the last week is so unfair. The important thing is that we know we depend on ourselves. We have to win it at home. I am excited to be champions with our fans.”
Third-placed Liverpool beat Bournemouth 3-0 at home with Mohamed Salah taking his goal tally for the season to 40 in all competitions — making him only the third Liverpool player to achieve that mark in a single campaign.
Sadio Mane and Roberto Firmino were also on target as Liverpool moved three points above Tottenham.
Liverpool are 10 points above fifth-placed Chelsea who hit back from two goals down at relegation-haunted Southampton to win 3-2 and keep alive their hopes of a top-four finish.
Third-from-bottom Southampton are five points from the safety zone after relegation rivals Crystal Palace beat Brighton & Hove Albion by the same score at Selhurst Park and Huddersfield Town beat Watford 1-0.
Swansea City are directly above Southampton after drawing 1-1 at home to Everton.
City’s fans celebrated long and loud after the final whistle at Wembley after a dazzling display by their team.
They dominated the first half and went ahead in the 22nd minute when captain Vincent Kompany’s long pass released Jesus to score in clinical fashion.
Three minutes later Spurs keeper Hugo Lloris sent Raheem Sterling flying although replays suggested the contact was just outside the area. The referee pointed to the spot, however, and Gundogan rolled home the kick.
Tottenham, whose 14-match unbeaten league run was their best spell since 1967, responded through Christian Eriksen before halftime but Sterling wrapped up the points in the 77th minute.
“We missed the first 25 minutes,” said Tottenham manager Mauricio Pochettino, whose side face Manchester United in the FA Cup semi-finals next week.
“We have to congratulate Manchester City because they are very close to winning the title.”
Chelsea trailed to goals by Dusan Tadic and Jan Bednarek at St Mary’s but Olivier Giroud came on as a 61st-minute substitute for the visitors to spark a stunning turnaround.
First, Giroud expertly met a cross from Marcos Alonso, who was lucky to be on the pitch after stamping on Shane Long.
Eden Hazard equalised from close range before Giroud fired in a low shot to give Chelsea the points.
The action was just as furious at Selhurst Park with all the goals coming in the opening 34 minutes, including a first-ever league double for Palace’s Wilfried Zaha.
Huddersfield rose to 14th thanks to an injury-time goal by Tom Ince while Jordan Ayew returned from a three-match ban to earn Swansea a draw against Everton.
Burnley earned their fifth straight league win with a 2-1 victory over Leicester City at Turf Moor to boost their chances of possible Europa League qualification.