Defeat would have left Arsenal's hopes of a first title since 2004 hanging by a thread but Martin Odegaard's brilliant strike and a Fabian Schar own goal sealed a vital victory.
Newcastle, bidding to cement third place and take a big step towards a top-four finish, dominated early on but Odegaard's sweet strike after 14 minutes gave the visitors the lead.
Schar then inadvertently turned in Gabriel Martinelli's cross with 20 minutes remaining.
City, who have won 10 straight games to overhaul Arsenal, have 82 points from 34 games with the Gunners on 81 having played a game more. Newcastle stay third on 65 but Manchester United could overtake them later on Sunday if they win at West Ham United.