Adam Johnson came off the substitutes' bench to lift Manchester City into second in the Premier League table after a 2-1 home win over a spirited Newcastle United.