Weir hit a 41-ball 52 at the top of the innings including seven fours and two sixes while Andrew, a wicket-keeper/batsman, made a top score of 80 from just 64 balls including eight fours and two four sixes.
Joshua Dorne also hit 32 as the tourists were restricted to 253 all out in 40.3 overs, 51 runs short of their target.
Vishwa Lahiru starred with 3-48 from 8.3 overs for Sri Lanka while Sineth Jayawardene (2-29 from three), Vihas Thewmika (2-29 from four) and Garuka Sanketh (2-44 from nine) all provided support.
Earlier, Sri Lanka made 304-8 off their 50 overs after winning the toss and choosing to bat.
Opener Pulindu Perera starred with a mammoth 155 off 140 balls including 17 fours and four sixes.
Nathan Edward took 3-66 from nine overs for the West Indies while Deshawn James (2-70 from 10) and Tarrique Edward (2-41 from 10) provided good support.
The teams will now turn their attention to a pair of youth Tests with the first beginning on Monday.
Batting first, West Indies scored 320 all out from their 50 overs, thanks to the efforts of Johnson, who laid the platform for the match-winning score. He made 105 from just 79 balls and hit 12 fours and three sixes while featuring in a third-wicket partnership of 160 from just 131 balls with Dorne, who scored a relatively patient 56 from 73 balls hitting the boundary six times along the way.
Edward chipped in with a crucial 53 that helped push the West Indies towards 300 runs through a 60-run partnership with Nathan Edward, who scored 13. Opener Adrian Weir scored 32 and was the principal scorer in a second-wicket stand of 41 with Dorne.
Sineth Jayawardena was the best of the Sri Lankan bowlers with 4-36.
Needing to score at 6.4 runs an over, Sri Lanka’s batters wilted under the pressure collapsing to 40-6 in the 14th over. Only a 46-run partnership between Malsha Tharupathi and Supun Waduge held up the West Indies attack and got the home side closer to the 100-run mark.
They were eventually bowled out for 125 in the 31st over to hand the West Indies victory.
Thorne finished with the impressive figures of 3-18 while James took 3-30. Nathan Edward chipped in with 2-17.
The teams will clash in a decider on Friday, September 1.
After winning the toss and electing to bat, West Indies scored 230 all out from their 50 overs thanks to Nandu, who was the top scorer with 80 from 120 balls faced. He struck nine fours. He lost his opening partner Anderson Amurdan, who failed to score and then Teddy Bishop for 12 as the West Indies got off to a poor start at 25-2.
However, Nandu and Ackeem Auguste mounted a recovery with a stand of 78 before the latter was dismissed by Rehan Ahmed for 25.
The loss of two additional wickets – Justin Beckford and Giovonte Depeiza - for just four runs saw the West Indies slip from 103-2 to 107-5 and in danger of collapsing. However, Nandu and Carlon Bowen-Tuckett staged another recovery with a 55-run sixth-wicket partnership that was broken when he was dismissed by Sonny Baker.
Tuckett and Johan Layne (16) put on 25 for the seventh wicket and then 19 more with Isai Thorne (6) before being ninth out for a well-played 48 from 94 balls faced.
Baker finished with 4-41 and Ahmed 3-30. Nathan Bramwell took 2-37.
Needing 231 for a fifth victory in the series, England Young Lions enjoyed a solid start between George Thomas and James Rew. The pair had put on 52 when Nandu bowled Rew for 28. At 64-1, Singh dismissed Alex Horton for 10 and then 27 runs later had Thomas stumped for 38 as England reached 91 for 3 in the 20th over.
England slipped further to 105-5 as Layne dismissed Daniel Ibrahim for 6 and Singh picked up his third wicket when he removed James Coles for 9.
However, Ahmed’s obdurate unbeaten 68 kept England in the hunt but they kept losing wickets at the other end as Nandu dismissed Thomas Aspinwall for 1 and Singh removed Fateh Singh for 13 as England reached 165-8 in over number 38.
Andel Gordon dismissed Barnwell for 1 and then ran out Baker for 3 as the West Indies closed out the match with their pride intact.
Singh returned figures of 4-51 while Nando had figures of 2-35.
In the match played at the Cumberland Playing Field, West Indies Under 19s won the toss for the third consecutive game and chose to bat after electing to field in the two previous matches.
They struggled throughout their innings, eventually capitulating for 106 in 38.3 overs.
Opener Shaqkere Parris top-scored for the young Windies with 27 and the only other batsmen to reach double figures were Teddy Bishop, who got 26, and vice-captain Giovonte Depeiza who got 22.
Hardus Coetzer and Dewald Brevis each took three wickets for the South Africans while Asakhe Tsaka and Alder took two apiece.
The South Africans then made a meal of their modest target of 107, being 90-8 at one stage before getting to 113-9 in 18.3 overs to win by one wicket thanks to 24 not out from Alder, batting at number nine, which included two sixes.
Opener Ethan Cunningham top-scored with 25 for South Africa U19s.
Off-spinner Onaje Amory almost produced a match-winning spell with 4 for 8 from his four overs, while Johann Layne and Matthew Nandu got two wickets each.
The fourth and final game of the series will be played on Monday at Arnos Vale.
South Africa Under-19s won the toss and elected to field first, which proved to be a good move as they were able to restrict West Indies Under-19s to 189 all out in 43.2 overs.
Captain Ackeem Auguste with 52 and wicketkeeper/batsman Carlon Bowen-Tuckett with 45 were the chief scorers for the Windies against 3-36 off four overs from Matthew Boast and 2-14 off five overs from Michael Copeland.
The South Africans then only needed 35.3 overs to reach their target, finishing 191-7 thanks to half-centuries from captain George Van Heerden (61) and Dewald Brevis (50) as well as 36 from Ethan-John Cunningham.
McKenny Clarke took 3-34 off five overs and Anderson Mahase took 2-31 off eight overs for the Windies.
West Indies will open their World Cup campaign against Australia Under-19s at Providence Stadium on Friday, January 14, while South Africa Under-19s will play their opener against India Under-19s at the same venue one day later.
For the fourth game in a row, West Indies U19 captain Ackeem Auguste won the toss, this time choosing to bat first.
In another disappointing batting display, West Indies U19s could only manage 126 all out in 35 overs.
Teddy Bishop top scored with 43 and Rivaldo Clarke added 30, against 4-11 from leg-spinner Dewald Brevis and two wickets each from pacers Matthew Boast and Aphiwe Mnyanda.
South Africa U19s were then skittled out for 107 in 23.5 overs to go down by 19 runs.
Mnyanda top-scored with 20 while Boast (11) and Valentine Kitime (13) were the only other batsmen to get double figures against 3-34 off eight overs from pacer Johann Layne, 3-23 off six overs from medium-pacer McKenny Clarke, and 3-14 off 2.5 overs from left-arm spinner Jaden Carmichael.
Both teams will now turn their attention to the start of the ICC Men’s Under-19 Cricket World Cup on January 14th in the Caribbean.
West Indies U19s will play Australia U19s in their first game at Providence in Guyana on January 14th while South Africa U19s will square off against India U19s at the same venue a day later.