Crystal Palace earn surprise win over Chelsea