Pep Guardiola’s side stretched their English top-flight record run to 16 successive victories in all competitions.
They are unbeaten in their last 23 matches and look odds on to win the title for the third time in the last four seasons.
Manchester United can close the gap to five points if they beat lowly West Bromwich Albion today, but City will still hold a game in hand to strengthen their grip on top spot.
Tottenham were no match for the red-hot leaders on a freezing evening at the Etihad Stadium.
The latest clash between old rivals Guardiola and Mourinho was a mismatch from the moment Rodri put City ahead.
Gundogan has been the main man during City’s winning streak and he finished off Tottenham with two ruthless strikes.
Since City last lost - at Tottenham in November - they have climbed from 13th place and overturned an eight-point gap to Mourinho’s men, who were top at the time.
“It was well deserved. We have a special way to play and we will continue. You have to be patient and calm,” Guardiola said.
Tottenham have now lost five of their previous six matches in all competitions.
Amid Mourinho’s awkward rifts with Gareth Bale and Dele Alli, there is a growing feeling Tottenham’s season is spiralling out of control.
They are languishing in eighth place, four points adrift of the top four.
“A fresh team against a very tired team, but we hit the post and going 1-0 could give us the fuel you need,” Mourinho said.
“A team that is not united would give up and would be punished but I saw guys like Kane, Davies, Pierre-Emile Hojbjerg giving everything.”
City went ahead in the 23rd minute after Hojbjerg tripped Gundogan with a trailing leg.
After Gundogan made it three penalty misses for City this season in their thrashing of Liverpool last weekend, Guardiola had hinted Ederson might take their next one.
City’s keeper did start moving towards the Tottenham area for a moment after the challenge on Gundogan, but he was sent back and instead Rodri stepped up to drive the spot-kick past Hugo Lloris.
Gundogan struck five minutes after half-time as his close-range finish eluded Lloris’s weak attempted save.
The in-form German midfielder wasn’t finished yet and in the 66th minute he sprinted onto Ederson’s long kick, gave Davinson Sanchez a subtle nudge and swivelled away from the stumbling defender before firing past Lloris.
Gundogan’s 11th goal in his last 12 league games came with a frustrating coda however as he limped off injured soon after.
Liverpool lose again
After sweeping aside City and the rest of the league en route to their first title in 30 years, Liverpool have lost their magic touch.
They crashed to a woeful defeat at Leicester to leave their top four hopes in jeopardy after Alisson Becker’s latest blunder sparked a stunning collapse.
Jurgen Klopp’s side endured a third successive defeat which would appear to end any chance of retaining the title.
The calamitous nature of Liverpool’s late meltdown raises serious questions about their bid to qualify for next season’s Champions League.
Mohamed Salah had given the Reds the lead in the second half at the King Power Stadium.
But James Maddison’s VAR-assisted equaliser turned the tide when his free-kick was allowed to stand despite Liverpool protests that Daniel Amartey was offside.
That was followed by a howler from Liverpool keeper Alisson, whose miscued clearance was converted by Jamie Vardy.
It was another miserable afternoon for Alisson following his two costly mistakes against City last weekend.
Harvey Barnes’ goal put the seal on Leicester’s superb comeback.
“The first goal for me is offside. The difference is we think it’s an objective thing but it’s not. That’s something that has to change (with VAR),” Klopp said.
“The second goal is a misunderstanding obviously. It is a situation where we should shout and I didn’t hear anyone shout. It is not that cool.”
The Reds have managed just two wins from their last 10 league games.
Burnley boosted their survival bid with a 3-0 win at Crystal Palace, while the late game between Brighton and Aston Villa ended 0-0.