Binny, 30, upstaged the efforts of Bangladeshi debutant Taskin Ahmed (5-28) to help India pocket the three-match series with one game still to go on Thursday.
Binny's figures were the best by any Indian bowler in the 50-over game, surpassing Anil Kumble's 6-12 against West Indies in Kolkata in 1993.
Chasing India's modest 105, Bangladesh were cruising at 44-2 but then lost their remaining eight wickets for just 14 runs to be shot out for 58 in 17.4 overs.
The total equalled their worst show in one-dayers, having also scored 58 against the West Indies in the 2011 World Cup.
Binny, playing in only his third one-day international, was well supported by medium pacer Mohit Sharma who finished with an impressive 4-22.
Mithun Ali was the lone batsman to offer some resistance, making 26 off 39 balls.
India were earlier bowled out for 105 in 25.3 overs, their lowest against Bangladesh in ODIs, after being put in to bat in overcast conditions at the Sher-e-Bangla stadium.
The day-night clash was interrupted in the sixth over because of heavy rain and was later reduced to 41-overs-a-side affair.
The 19-year-old Taskin was the star performer for the hosts, picking a five-wicket haul on debut -- the best figures by any Bangladesh bowler on debut.
Taskin wreaked havoc with his seam and bounce, dismissing Robin Uthappa (14), Cheteshwar Pujara (11) and Ambati Rayudu (1) in his fiery first spell.
He picked his first international wicket when opener Robin Uthappa, who made a fine half-century in the opening game, top-edged the paceman to mid-off where Ziaur Rahman took an easy catch.
The bowler had the visitors reeling at 55-4 after he sent back Rayudu and Pujara in the 14th over.
Captain Suresh Raina fought back briefly, making 27 off 23 balls with three fours when he was run out as he tried to go for a second run.
Only four batsmen managed to score in double figures with India crashing to their worst total against Bangladesh in one-dayers.
Taskin returned in his second spell to send back Binny and Amit Mishra in a space of five balls.
His effort bettered that of off-spinner Sohag Gazi who had taken 4-29 against West Indies in 2012.
India, who won the opening game on Sunday by seven wickets, brought in all-rounder Stuart Binny in place of off-spinner Parvez Rasool.
For Bangladesh, Mithun Ali came in for Mominul Haque and Taskin replaced Abdur Razzak.