Chelsea hold on to beat Swansea City