Ilkay Gundogan opened the scoring for City in the first half while Kevin De Bruyne doubled the lead in the 70th minute. Raheem Sterling netted twice in the 80th and the 90th minute before Christian Erikssen scored a consolation goal for Tottenham in injury time.
City’s 16-match winning run equals Pep Guardiola’s second-longest streak as a manager he accomplished with Barcelona in 2010-11.
“We played really good to beat one of the strongest teams in the Premier League,” Guardiola said.
“Since August we are so happy and I admire the most the way we play without the ball. We are on a good streak.”
Chelsea beat Southampton
Second-placed Chelsea beat Southampton 1-0 thanks to a strike by Marcos Alonso who scored in first-half stoppage-time.
Chelsea have now won eight of their last 10 league matches.
Chelsea’s fellow Londoners Arsenal beat Newcastle 1-0. Mesut Ozil scored the decisive goal in the first half with a superb volley from the edge of the box.
In other Premier League matches, West Ham beat Stoke 3-0, Huddersfield thrashed Watford 4-1, Crystal Palace cruised to a 3-0 win over Leicester while Burnley were held to a goalless draw by Brighton.