England have taken a 2-1 lead in their Test series against South Africa after a comprehensive win in the third Test in Port Elizabeth.