Morgan (107), dropped on just four, was patient and resourceful to help eke out a total of 296 for six - which proved beyond the hosts on a slow surface.
Liam Plunkett - with a career-best four for 40 - and Chris Woakes (four for 47) did most damage to a chase undermined when West Indies' first three wickets fell for the addition of only three runs after they had first reached 36 for none.
Jason Mohammed (72) responded with his maiden ODI half-century, in his third innings - putting on 82 in 14 overs with Jonathan Carter (52) - but England kept their composure to stay on top.
Morgan's fine effort to overturn the disadvantage of losing the toss after a start delayed by heavy morning showers was therefore put into favourable context as his team began their final approach to this summer's Champions Trophy with a reassuring success.
The captain figured in partnerships of 67 with Sam Billings (52), 110 with Ben Stokes (55) and 53 with Moeen Ali after coming to the crease at a sticky 29 for two.
Morgan had to contend with a sluggish pitch, a factor which played its part when he was through his attempted pull shot on 48 and hit on the StemGuard by a Shannon Gabriel bouncer.
The additional helmet protection ensured he was unhurt despite being struck almost exactly as Australia batsman Phil Hughes was fatally in 2014 - before the StemGuard attachment was developed to cover the side of the neck.
Morgan was therefore unperturbed and rewarded with his second hundred in his last three ODI innings, completed with his second six over long-on off Carlos Brathwaite to add to 10 fours from 112 balls.
England had lost Jason Roy and Joe Root early to Gabriel - near action-replay dismissals, the second a variation involving splayed off and middle-stumps rather than lbw but both batsmen defeated by marginal low bounce, a hint of movement and pace.
There was no cost for Jason Holder's failure to hold a return chance from Roy on 13 - but when Kieran Powell put down a straightforward slip catch, distracted perhaps by the wicketkeeper diving in front of him from Brathwaite's first delivery, Morgan's survival proved much more significant.
Billings unsurprisingly struggled as the new ball played plenty of tricks.
He then played well for his near run-a-ball 50 but was rightly cross with himself for finding the man in the classic off-spinner's position at straight midwicket.
Jos Buttler was promoted ahead of Stokes but could not muster his first significant score of the year, well-caught on 14 by Carter diving to his right at slip for Ashley Nurse's second wicket.
Stokes was circumspect in his first international innings since sealing a record-breaking £1.7million Indian Premier League deal, taking 26 balls to reach double-figures but going on to make his first boundary - from his 44th delivery - England's first six, over long-on off Mohammed at the end of the 40th over.
By then, there had been a second escape for Morgan - this time on 69, when Shai Hope failed to gather a stumping chance off Mohammed - and Stokes might also have gone but instead counted another leg-side six off Gabriel when Kraigg Brathwaite over-balanced beyond the rope and dropped the ball.
Stokes accelerated to his sixth 50 in his last nine ODI attempts but was caught at long-on, aiming for a fourth six.
Morgan saw his job through, until he was run-out with four balls remaining as 100 runs came in the last 10 overs of England's necessarily back-loaded innings.
The gameplan for West Indies' reply was to follow a similar method. But Brathwaite and Evin Lewis each holed out naively off Woakes - and Powell paid for closing the face in Plunkett's first over.
Hope and Mohammed put on 69 for the fourth wicket.
Then after the wicketkeeper cut Adil Rashid aerially to point, Mohammed and Carter kept England guessing with their twin 50s until the left-hander fell to a crucial, tumbling catch by Roy at deep square-leg off Plunkett.
Mohammed was still up for the chase only to be run-out by Steven Finn, kicking the ball on to the stumps in his follow-through to prevent a scampered single in the Windies' eventual 251 all out in the 48th over.