A century from opener Rohit Sharma and controversial umpiring have conspired to work against Bangladesh and help India post 6-302 in their World Cup quarter-final at the MCG.
Having made a fast start, India stumbled when Shikhar Dhawan (30), Virat Kohli (3) and Ajinkya Rahane (19) fell in the space off 11 overs to leave them 3-118 after 28 overs.
But Rohit held the innings together as Raina lifted the run rate in a 122-run partnership before the opener hit out late in his innings, finishing with 14 fours and three sixes.
However, both men enjoyed fortunate reprieves.
Raina looked to be trapped plumb lbw by Mashrafe Mortaza in the 34th over, when he was on 10.
Captain Mashrafe referred the not-out verdict, but the ball-tracking technology suggested it had pitched a whisker outside leg stump.
Mashrafe was bewildered, but that was nothing compared to his disbelief that followed Rohit's let-off on 90.
The opener smacked a full toss from Rubel Hossain to a fielder in the deep, but the paceman was no-balled by Umpire Ian Gould due to the height of his delivery.
Replays confirmed the decision was incorrect.
"Bad decision from Gould, was definitely not above the waist. Lucky break for Rohit," India legend VVS Laxman posted on Twitter.
India scored 10 runs an over during their batting powerplay, while Rohit started to open his shoulders after reaching triple figures with a deft cover drive in the 42nd over.
He raced from 112 to 137 in the space of nine deliveries when he was finally clean bowled by Taskin Ahmed.
But Ravindra Jadeja (23 not out) was able to push India's total beyond 300, with Bangladesh continuing to exasperate Mashrafe with some unforgivable errors in the field.
MS Dhoni had earlier won the toss and his side were in control up until the first drinks break.
Dhawan and Rohit's running between the wickets was slapdash and skittish early, but the openers soon settled in a 75-run partnership.
Momentum turned sharply when Dhawan was stumped off the bowling of star allrounder Shakib Al Hasan in the 17th over.
Keeper Mushfiqur Rahim snaffled a catch to remove Kohli the following over and the vast majority of the boisterous crowd were shocked to silence.
Rahane struggled to turn the strike over and fell for 19 when he spooned a catch to a diving Shakib at mid-off.
Wicket-taker Taskin celebrated with a chest bump and his side looked well placed to grab the game by the scruff of the neck, but it was Rohit who stood tall.
There was no shortage of feeling in the knockout fixture, with Hossain's send-off of Kohli particularly spirited.
India: 1 Shikhar Dhawan, 2 Rohit Sharma, 3 Virat Kohli, 4 Ajinkya Rahane, 5 Suresh Raina, 6 MS Dhoni (capt. & wk), 7 Ravindra Jadeja, 8 R Ashwin, 9 Mohit Sharma, 10 Mohammed Shami, 11 Umesh Yadav
Bangladesh: 1 Tamim Iqbal, 2 Imrul Kayes, 3 Soumya Sarkar, 4 Mahmudullah, 5 Shakib Al Hasan, 6 Mushfiqur Rahim (wk), 7 Sabbir Rahman, 8 Nasir Hossain, 9 Mashrafe Mortaza (capt.), 10 Rubel Hossain, 11 Taskin Ahmed