After the early departure of Chris Gayle (7) in the last World Cup innings of his career, West Indies bounced back through half-centuries by Evin Lewis (58) and Shai Hope (77).
Some late big-hitting from Nicholas Pooran (58 off 43) and Jason Holder (45 off 34, including four sixes) in the middle order helped take the Windies beyond 300 in the final over, the kind of total that has been beyond Afghanistan this tournament.
The Afghans' highest score in its opening eight group games was 247-8 against England in Manchester. The average score for teams batting second has been 234.
Rashid Khan, Afghanistan's most famous player, continued his disappointing form at the World Cup with bowling figures of 1-52 and he also dropped Hope — on 5 — at midwicket. He finishes the tournament with six wickets in total at an average of 69.
West Indies is 147-2 after 30 overs against Afghanistan.
Shai Hope is on 50 — his third half-century at this World Cup — and Shimron Hetmyer is on 29 off 19 balls.
Evin Lewis was the second batsman to depart, holing out to Mohammad Nabi in the deep off Rashid Khan for 58.
Chris Gayle's last innings at a Cricket World Cup lasted 18 balls.
"The Universe Boss," as the 39-year-old West Indies opener calls himself, was on 7 when he stepped forward at the crease and tried to smash Dawlat Zadran to the fence on the offside. He ended up nicking it behind to Ikram Ali Khil.
Gayle trudged off, briefly holding his bat up to the crowd. He had needed 18 runs to eclipse Brian Lara's record of 10,348 for the West Indies in ODIs.
Gayle is making his record-tying 295th ODI appearance for the Windies, matching Lara's haul. He had planned to retire from ODIs at the end of the World Cup but recently said he would be available for matches against India in August.
West Indies has won the toss and will bat first against Afghanistan under sunny skies and on a pitch that should be good for batting.
The Windies have made two changes, with opener Evin Lewis and paceman Kemar Roach in for Sunil Ambris and Shannon Gabriel.
Afghanistan brought in Dawlat Zadran and Sayed Shirzad for Hashmatullah Shahidi and the newly retired Hamid Hassan.
Headingley is bathed in sunshine for the last match for both teams at the tournament.
Lineups:
Afghanistan: Gulbadin Naib, Rahmat Shah, Ikram Ali Khil, Asghar Afghan, Mohammad Nabi, Najibullah Zadran, Samiullah Shinwari, Rashid Khan, Mujeeb Ur Rahman, Dawlat Zadran, Sayed Shirzad.
West Indies: Chris Gayle, Evin Lewis, Shai Hope, Nicholas Pooran, Shimron Hetmyer, Jason Holder, Carlos Brathwaite, Fabian Allen, Kemar Roach, Sheldon Cottrell, Oshane Thomas.
Certain to finish in last place in the Cricket World Cup standings, Afghanistan can still sign off on a high note by beating West Indies for its first win of the 2019 tournament.
It is a match between the worst two teams of the group stage, with West Indies only on three points — courtesy of a win over Pakistan and a washout — and Afghanistan on 0. Neither team can progress to the semifinals.
Afghanistan won one of its six group matches in the 2015 World Cup, when the country was making its debut.
West Indies has underperformed over the past five weeks but will be looking to give 39-year-old star opener Chris Gayle a successful send-off in his last World Cup match.