Shreyas Iyer, Axar Patel and an injured Rohit Sharma hit valiant half-centuries, but their efforts went in vain as India lost the second ODI to Bangladesh in a thrilling encounter at the Sher-e-Bangla National Cricket Stadium (SBNCS) in here, on Wednesday.

After Mehidy Hasan Miraz turned out to be India's nemesis for the second time in as many matches by scoring an unbeaten 83-ball century while veteran batter Mahmudullah made a fine 77 to carry Bangladesh to a respectable 271/7 in 50 overs from being 69/6 at one stage, their bowlers were clinical in reducing India to 65/4 in 18.3 overs.

India were in troubled waters, and were steered out of it by 82 from Shreyas and run-a-ball 56 from Axar. Rohit, despite a taping on his injured left thumb which didn't allow him to open, hit an unbeaten 51 off 28 balls and threatened to take the match away from Bangladesh. But it wasn't meant to be as Bangladesh maintained their perfect record of not losing a series at home since October 2016.

Joining from 65/4 in 18.3 overs, Shreyas began by paddle-sweeping left-arm spinner Nasum Ahmed, while Axar slammed a six over the bowler's head. Shreyas was quick in getting a brace of boundaries off Mehidy while Axar employed slog-sweep against Shakib for a huge six. Post reaching his fifty, Shreyas used his feet well against spinners for boundaries and was fluent in his square drive, slice against fast bowlers.

Just as he looked to go big for another six, Shreyas picked out deep mid-wicket off Mehidy, bringing the 107-run partnership off 101 balls to an end. But Axar continued with his clean lofts and slog-sweeps against Nasum and Mehidy to get his second fifty of this year.

Axar's stay, though, ended in 39th over, when Ebadot cramped him for room and forced the batter to hit straight to extra cover. Things got tougher for India as Shardul Thakur was easily stumped while Deepak Chahar holed out in the deep.

Rohit came out to bat at number nine and swivel-pulled Ebadot for a brace of sixes, before timing an elegant off-drive in the 46th over. But with Mahmudullah conceding just a solitary run in the 47th over and Mustafizur bowling a maiden 48th over, things looked tough for India.

Rohit slog-swept and pulled Mahmudullah for a brace of sixes in the 49th over, where he was dropped twice in the deep, though the all-rounder castled Mohammed Siraj on the final ball.

With 20 needed off the final over, Rohit sliced Mustafizur through third man and in the gap between point and short third man. He swatted the left-arm pace down the ground on the fifth ball, but Mustafizur had the last laugh as Rohit couldn't get a run on a yorker, depriving him of the room to swing hard, to give Bangladesh an unassailable lead in the series.

Earlier, Virat Kohli couldn't last long after walking out to open alongside Shikhar Dhawan in Rohit's place, getting his off-stump uprooted while trying to pull off the bowling of Ebadot Hossain. In the next over, Mustafizur Rahman bounced out Shikhar Dhawan, giving backward point a simple catch.

More trouble followed India as Washington Sundar chipped it straight to mid-wicket in Shakib Al Hasan's first over, while KL Rahul was trapped lbw by Mehidy while attempting a lap sweep. From there, Shreyas, Iyer and Rohit brought India closer to the target, but it just wasn't meant to be.

Brief Scores: Bangladesh 271/7 in 50 overs (Mehidy Hasan Miraz 100 not out, Mahmudullah 77; Washington Sundar 3/37, Umran Malik 2/58) beat India 266/9 in 50 overs (Shreyas Iyer 82, Axar Patel 56; Ebadot Hossain 3/45, Shakib Al Hasan 2/39) by five runs