Angelo Mathews hit a patient fifty before veteran pacer Lasith Malinga returned with a sensational four-wicket haul as Sri Lanka stunned hosts England by 20 runs to keep their World Cup semifinal hopes alive.
Electing to bat, Sri Lanka managed a modest 232 for nine, riding on an unbeaten 115-ball 85 by Mathews.
The 1996 champions then returned to dismiss England for 212 in 47 overs to register only their second win in this World Cup.
Malinga (4/43) emerged as the star for Sri Lanka as he dismissed the top three -- James Vince (14), Jonny Bairstow (0) and Joe Root (57) and also accounted for Jos Buttler (10).
Stokes responded by going on the attack, with nine wickets down, stroking two sixes and two boundaries. He tried to retain the strike as much as possible, declining singles, but was left stranded on 82.