The two subregional teams were competing at Warner Park in St Kitts and Nevis, with the Volcanoes vying to stay in the lead in Group B.
Montcin Hodge and Daron Cruickshank each scored half-centuries as part of a 123-run second-wicket partnership for Leewards, who ended on 238/7 after batting first. Mervin Matthew eventually claimed both batsmen as part of his 4-49.
Charles, the West Indies Twenty20 opener from Millet, cracked a run-a-ball 72 to spark the Windwards reply before they fell into trouble after his dismissal midway through the chase. Three days shy of his 27th birthday, he compiled six boundaries and four sixes.
When Rahkeem Cornwall dismissed Kavem Hodge in the 33rd over, Leewards appeared to be closing in on victory at 128/6 and 111 still needed from Windwards. But Barbadian import Kyle Mayers battled back with an unbeaten 55 off 38 balls from No. 8, including a vital 55-run eighth-wicket stand with Shane Shillingford, to get Windwards over the line.
In the other game played in Group B, Guyana maintained second place with a six-wicket win over Combined Campuses & Colleges in Basseterre.