An all-round show with a century to anchor India's target of 269 and two wickets helps the hosts win by 80 runs as the group stage comes to a close.
India ride on Yuvraj to beat West Indies and finish second in group
India secured second place in Group B and a quarter-final against defending champions Australia after rattling out eight batsmen for 34 runs as West Indies was dismissed for 188, chasing 269 to win.
West Indies must rally quickly to have any chance of beating Group A winner Pakistan in the first of the quarter-finals at Dhaka on Wednesday. India plays Australia the following day at Ahmedabad.
• World Cup chagrin can be making of Shakib Al Hasan
• How the teams fared
• Minnows make the cricket World Cup better
• Kamran Akmal, best friend of every batsman and rival of Pakistan
Yuvraj struck 10 fours and two sixes and shared a 122-run stand with Virat Kohli (59). The left-handed Yuvraj was dropped twice by West Indies captain Darren Sammy early on and cashed in with 113 from 123 balls.
Ravi Rampaul returned a career-best 5-51 for West Indies, including the wicket of Sachin Tendulkar in the first over of the match. Rampaul had been called into the team as a late replacement for Kemar Roach.
Opener Smith led West Indies reply and combined for a 57-run stand with Darren Bravo and 63 with Ramnaresh Sarwan (39) but the match-deciding slide started when he was bowled by Zaheer Khan, who finished with figures of 3-26.
The back-to-back partnerships had boosted West Indies' hopes of a first win over a major team since June 2009, but a patient India suddenly struck back to rush through the middle and lower order.
Bravo (22) had thrown away a promising stand with a careless loft to Harbhajan Singh at long-on off Suresh Raina, but Smith and Sarwan pushed the West Indies on.
Khan ended the threat in the first over of his second spell, bowling Smith for a crucial strike. Kieron Pollard hammered a ball straight to Yusuf Pathan on the boundary in the 32nd over, just three runs after Smith had fallen.
And Yuvraj was the fourth Indian spinner to grab a wicket when Devon Thomas was stumped for nine and West Indies had suddenly hit serious trouble at 160-5.
Sammy was run out and the dangerous Andre Russell became Yuvraj's second victim, leaving West Indies' tail exposed as the Caribbean team again folded at Chennai from a promising position.
India had made good its promise to give all of its squad members a run out in the group stage, with Ashwin and Raina brought in at their home ground for their first games at the World Cup. West Indies rested opener Chris Gayle and paceman Roach for Edwards and Rampaul.
It was Kohli and Yuvraj who held together India's innings, even as Rampaul pulled the co-host back with the first three wickets and two late strikes for a five-wicket haul in his first game at the tournament.
Playing his 450th one-day international, Tendulkar (2) got a faint edge to wicketkeeper Devon Thomas off the sixth ball of the match from Rampaul.
Steve Davis, the Australian umpire, rejected Rampaul's raucous appeal but a sporting Tendulkar walked off anyway.
Opening alongside Tendulkar and in place of the injured Virender Sehwag, Gautam Gambhir (22) struck three quickfire boundaries but fell to a catch down at third man after flashing a cut shot off Rampaul. That left Kohli and Yuvraj with the responsibility of rescuing the effort from 51-2.
Yuvraj made the most of dropped chances by Sammy when he was on nine and then 13 to score his first century in 20 World Cup games. He had three half-centuries in his latest four innings before Sunday.
Gautam Gambhir c Russell b Rampaul 22
Sachin Tendulkar c Thomas b Rampaul 2
Virat Kohli b Rampaul 59
Yuvraj Singh c and b Pollard 113
MS Dhoni st Thomas b Bishoo 22
Suresh Raina c Rampaul b Sammy 4
Yusuf Pathan b Rampaul 11
Harbhajan Singh c Pollard b Russell 3
Ramchandra Ashwin not out 10
Zaheer Khan b Rampaul 5
Munaf Patel b Russell 1
Extras (b5, lb2, w9) 16
Total (all out, 49.1 overs) 268
Fall of wickets: 1-8 (Tendulkar), 2-51 (Gambhir), 3-173 (Kohli), 4-218 (Dhoni), 5-232 (Raina), 6-240 (Yuvraj Singh), 7-251 (Pathan), 8-259 (Harbhajan Singh), 9-267 (Zaheer Khan), 10-268 (Patel)
Bowling: Rampaul 10-0-51-5 (5w); Benn 4-0-32-0; Russell 9.1-1-46-2 (2w); Sammy 6-0-35-1 (1w); Bishoo 10-0-48-1; Pollard 10-0-49-1 (1w)
Devon Smith b Khan 81
Kirk Edwards lbw b Ashwin 17
Darren Bravo c Harbhajan b Raina 22
Ramnaresh Sarwan c Ashwin b Khan 39
Kieron Pollard c Pathan b Harbhajan 1
Devon Thomas st Dhoni b Yuvraj 2
Darren Sammy run out 2
Andre Russell c Pathan b Yuvraj 0
Sulieman Benn c Patel b Khan 3
Devendra Bishoo not out 6
Ravi Rampaul b Ashwin 1
Extras: (8lb, 6w) 14
Total: (all out, 43 overs) 188
Fall of wickets: 1-34 (Edwards), 2-91 (Bravo), 3-154 (Smith), 4-157 (Pollard), 5-160 (Thomas), 6-162 (Sammy), 7-165 (Russell), 8-179 (Benn), 9-182 (Sarwan), 10-188 (Rampaul)
Bowling: Ravichandran Ashwin 10-0-41-2 (1w), Zaheer Khan 6-0-26-3 (2w), Harbhajan Singh 9-1-35-1 (1w), Yusuf Pathan 7-0-28-0, Suresh Raina 2-0-12-1, Yuvraj Singh 4-0-18-2, Munaf Patel 5-0-20-0 (1w).
Result: India won by 80 runs.
Q1 – March 23, Dhaka
Pakistan v West Indies
Q2 – March 24, Ahmedabad
Australia v India
Q3 – March 25, Dhaka
New Zealand v South Africa
Q4 – March 26, Colombo
Sri Lanka v England
March 29, Colombo
Winner of Q3 v Winner of Q4
March 30, Mohali
Winner of Q1 v Winner of Q2
April 2, Mumbai