Watch: Yorkshire's Liam Plunkett plunders last-ball six to earn battling England amazing tie with Sri Lanka
The hosts faltered to 30-4 and then 82-6 in reply to 286-9 in the first Royal London Series match.
But in the key absence of Sri Lanka captain Angelo Mathews, off the field with a sore hamstring, seventh-wicket pair Buttler (93) and Woakes (95no) put England back in the mix with a brilliant stand of 138.
Advertisement
Hide AdAdvertisement
Hide AdThen, just when it seemed Sri Lanka would surely prevail after all, No 10 Plunkett smashed Nuwan Pradeep high over long-off for six to leave the scores level.
Woakes and Buttler were two of only three batsmen in the top nine to even reach double-figures as England faltered to the all-round skills of Mathews, who followed his hard-working 73 with two early wickets.
Sri Lanka’s total, on a good pitch after Eoin Morgan won the toss, owed most to Mathews but also plenty to a hugely contrasting half-century from Seekkuge Prasanna (59).
When Mathews then induced a false start in reply, England soon seemed washed up.
Advertisement
Hide AdAdvertisement
Hide AdJason Roy could not locate Mathews’s wicket-to-wicket line and was lbw when the ball hit his back pad. Then came a collector’s item moment of bizarre misjudgment from Alex Hales.
He chiselled a simple catch to midwicket off Suranga Lakmal, before being talked into chancing England’s only review by non-striker Joe Root on the apparent basis that his bat might have been tucked behind his pad. It was not.
Yorkshire’s Root had uncharacteristically dropped an outfield catch in the penultimate over of Sri Lanka’s innings.
That was not costly, but confirmation that things are not going his way came when he went back to Mathews and was bowled. Club-mate Jonny Bairstow, in his first ODI since last September, could not take advantage of a let-off on nought – an easy chance to midwicket going begging off Mathews – before he went for three anyway when he guided another catch to point.
Advertisement
Hide AdAdvertisement
Hide AdMorgan hinted at a riposte but departed, short of a half-century for a 19th successive international innings, edging a waft at Pradeep.
Instead, after Moeen Ali chopped on to Pradeep, Buttler and Woakes shook things up.
Buttler gave a half-chance on 10, a drive for four through the fingertips of a diving Farveez Maharoof at mid-off, and then a second on 90 when Prasanna could not hold on at cover.
By then, England were within sight of a famous chase.
But Buttler was brilliantly caught on the long-on boundary by Dasun Shanaka off Prasanna, with 67 still needed.
Advertisement
Hide AdAdvertisement
Hide AdWoakes’s maiden 50 in this format was also his first in any List A match, yet in the end it was Plunkett who grabbed a share of the glory and the spoils in an unbroken half-century partnership as England finished on 286 for eight after hitting 29 off the last two overs.
Mathews had earlier dug in with the bat to provide Sri Lanka’s longevity, hitting just five fours from 109 deliveries.