A brilliant century from Kumar Sangakkara propelled Sri Lanka to a convincing seven-wicket win over England and keep Group A of the ICC Champions Trophy very much in the balance.