England eased into a 2-0 series lead over Sri Lanka as Eoin Morgan’s unbeaten 58 and a disciplined bowling performance delivered victory in a rain-shortened third one-day international.

The match at Pallekele was cut down to 21 overs per innings after play was delayed by almost six hours, the latest frustration in a monsoon-season tour at odds with both common sense and the elements, but England’s well-oiled machine powered through for a seven-wicket win with 15 balls to spare.

Morgan’s half-century was a fourth in his last five knocks but his work was made considerably easier by the efforts of Adil Rashid and the returning Tom Curran.

Rashid claimed four for 36 as the home side were held to 150 for nine, with Curran turning in an exemplary three for 17 after winning the battle to replace the injured Liam Dawson.

When play belatedly got under way Niroshan Dickwella got Sri Lanka off and running with seven boundaries from his first 12 deliveries, dancing around the crease as he directed the ball to all four corners of the ground.

There was a pair of authentic cover drives and a disdainful slog off Chris Woakes, then a pull and an uppercut off Olly Stone. England had barely digested his footwork by the time the scoreboard read 55 for nought off five overs.

That was as good as it got for the hosts, though, with their next 16 overs yielding 95 runs and nine wickets.

Curran got the ball rolling, drawing the mis-hit from Dickwella and watching nervously as Woakes took a tricky catch at the second attempt.

Kusal Mendis banked a golden duck, suckered in by an brilliant Rashid googly, and the swagger never returned. Rashid claimed Sadeera Samarawickrama and Thisara Perera with successive deliveries – a rank full-toss and a tempting leg-break skied towards the sprawling Jason Roy.

That was enough to earn him a fifth over, with one bowler given that privilege in the revised conditions, and he summoned another fine googly to castle Dasun Shanaka.

With Moeen Ali not seen again after a solitary over early on, Ben Stokes caught the eye in the middle period, befuddling the batsmen with shifts in pace and getting through his first three overs at a cost of 10.

Curran returned at the back end and laid down his marker. He first picked off Dhananjaya de Silva with a slower ball and then ended Dinesh Chandimal’s laboured 34 during a classy final over, which ended with him adding a run out off the final ball.

England’s response began perfectly as Lasith Malinga, ably assisted by an aggressive Roy, donated 17 runs from his first visit.

Left-arm spinner Amila Aponso fashioned an instant response, having Jonny Bairstow caught at mid-off with his second ball then skidding one past a lacklustre press from Joe Root and rocking back middle stump.

Roy and Morgan took some of the sting out of the situation with a calming stand of 46, during which the required rate dropped to less than six an over.

Roy (41) continued to win his personal duel with Malinga and heaved Akila Dananjaya for six moments before falling lbw sweeping the spinner.

Morgan’s 92 anchored England’s win in the second ODI and he was doing important work here too, punching regular boundaries between cover and backward point.

Stokes proved a perfect foil, damaging Nuwan Pradeep’s ego with an outrageous over-the-shoulder ramp for six and De Silva’s shoulder with a thunderous stroke that left the bowler needing treatment.

Stokes clubbed the winning six straight down the ground in the 19th over, by which time the pair had put on 73 runs in 57 deliveries.