Chelsea moved one point behind third-placed Tottenham with a victory over a Newcastle side who are now in the relegation zone.
Pedro gave the Blues an eighth-minute lead when he collected David Luiz’s ball over the top, took a touch, then shot past Martin Dubravka.
But Newcastle equalised through Ciaran Clark’s powerful header when he got between Antonio Rudiger and David Luiz from Matt Ritchie’s corner.
Willian won it for Chelsea in the second half with a fine curling finish after being played in by Eden Hazard.
The result leaves Maurizio Sarri’s side fourth, six points clear of Arsenal, who they face at Emirates Stadium in their next game on 19 January.