Cesc Fabregas marked his 300th Premier League appearance by putting the Blues ahead, poking the ball through the legs of Jack Cork and into the net.
The hosts were stunned when Swansea equalised from their first serious attempt on target on the stroke of half-time – Fernando Llorente heading in Gylfi Sigurdsson’s free-kick.
Fabregas hit the bar before Pedro’s curling effort restored the lead and Diego Costa netted the third from close range.
Swansea were denied a penalty when Cesar Azpilicueta handled inside his area at 1-1.
