Mohammad Nabi ran through a panic-stricken Sri Lanka top order in the World Cup on Tuesday as Afghanistan bowled their struggling opponents out for 201 in a rain-affected match in Cardiff.

Sri Lanka came out of the blocks quickly under leaden skies, reaching 144 for one before the halfway point of their innings and were on course for a morale-boosting big score against the unfancied Afghans.

But Nabi, who had earlier removed captain Dimuth Karunaratne for 30, turned the match in the Welsh capital on its head, with three wickets in five balls as Sri Lanka slumped to 146-4.

“I tried my best to turn on this pitch, loop a lot, and trying my best to bowl on the good areas,” said a delighted Nabi. “We will try our best to achieve this total and not give away a lot of wickets to the opposition team.”

Shell-shocked Sri Lanka kept on losing wickets at regular intervals, with 35 extras the second-highest scorer. The turning point of the match was the dramatic 22nd over.

Nabi bowled Lahiru Thirimanne for 25 before having Kusal Mendis caught by Rahmat Shah in the slips for two runs. Angelo Mathews was next to go, for a duck, also caught by Shah.

Fast bowler Hamid Hassan then had Dhananjaya de Silva caught behind for nought by Mohammad Shahzad to leave Sri Lanka in deep trouble.

Thisara Perera was run out for two before Isuru Udana was bowled by Dawlat Zadran for 10. Leg-spinner Rashid Khan joined the party, having opener Kusal Perera caught behind by Shahzad for 78.

Rain then intervened, forcing the players from the field, with Sri Lanka 182-8. The rain delay meant the match was reduced to 41 overs a side but Sri Lanka folded quickly after the resumption, losing Lasith Malinga and Nuwan Pradeep for the addition of just 19 more runs. Afghanistan need a rain-revised target of 187 to win.

Earlier, Afghanistan captain Gulbadin Naib won the toss and chose to field, hoping to take advantage of the favourable conditions for bowlers. But openers Karunaratne and Kusal Perera settled quickly as they shared a stand of 92 for the out-of-form side.

Both teams were soundly beaten in their first matches of the tournament in England and Wales. Former champions Sri Lanka were thumped by 10 wickets by New Zealand on the same ground while Afghanistan went down by seven wickets to defending champions Australia in Bristol.

Afghanistan, playing in only their second World Cup, beat 1996 world champions Sri Lanka soundly in last year’s Asia Cup in the United Arab Emirates. Sri Lanka have won only one of their 10 one-day international matches this year – against minnows Scotland.