It was an afternoon to forget for City goalkeeper James Trafford.
Spurs scored four without reply at City last season and this time celebrated a 2-0 triumph as on-loan Palhinha capitalized on a mistake by home debutant Trafford shortly after Johnson had opened the scoring.
Tottenham deserve the plaudits but much of the post-match analysis will surround goalkeeper Trafford, who returned to the Etihad Stadium this summer in a £27million ($36.5 million) move from Burnley.
Johnson's opener was hard to prevent but Trafford could have been sent off for a clumsy challenge on Mohammed Kudus before his huge error allowed Palhinha to score in first half stoppage time.
Ederson, back from illness, watched from the bench as speculation about his future and City's potential move for Paris St Germain star Gianluigi Donnarumma rumbles on.
Initially ruled out for offside against the Brazil international, the goal was eventually awarded and the VAR's review sparked wild celebrations in the away end.
City spiralled from that point, with Trafford foolishly passing short in his own box to Nico Gonzalez, who had Sarr on his back.
The ball went loose to Richarlison and then reached Palhinha to drive home Spurs' second.