Bangladesh won for the first time in 25 matches and enjoyed their first victory over England in any format with a stunning five-run success in the second one-day international in Bristol on Saturday.
They defended a seemingly below par total of 237 to bowl England out for 231 with three balls to spare.
Bangladesh had lost 24 matches in all formats since beating Zimbabwe by one wicket in a one-day international in Chittagong in November and came into this match on the back of Thursday's six-wicket series-opening loss at Trent Bridge.
But now they can dream of winning the three-match series 2-1 in the concluding match at Edgbaston on Monday.
England nearly avoided an embarrassing defeat thanks to Jonathan Trott's career-best 94.
However, Trott, in his first ODI since playing against his native South Africa in Port Elizabeth in November, was last man out when caught behind off Shafiul Islam.
The paceman held his nerve to finish with two wickets for 38 runs.
Admittedly Ian Bell - who made 84 not out at Trent Bridge on Thursday - did not come out to bat until England were nine wickets down and needing 10 off the last over, after breaking his foot while diving to try to take a catch during Bangladesh's innings.
But the Tigers were without Raqibul Hasan, who top-scored for them with 76 at Trent Bridge but had his toe broken by a James Anderson yorker in the process and wicketkeeper Mushfiqur Rahim, who was ruled out after being hit in the face during the same match.
England collapsed to 115 for five and were 166 for seven in the 40th over when Stuart Broad joined Trott.
The duo got the target down to 36 off five overs and Trott then clipped left-arm spinner Shakib Al Hasan for four.
But their stand of 43 was broken when Broad, on 21, was well caught by a leaping Shakib at backward point off a flashing square drive from Mortaza's first ball back.
England, eight wickets down, now needed 28 off 23 balls.
They required 23 off the last two overs and then Trott inside edged a four off Mortaza before, next ball driving him down the ground for a boundary.
However, off the final ball of the penultimate over, Anderson was caught and bowled for two by Bangladesh captain Mashrafe Mortaza.
Bell, with Eoin Morgan as a runner, came out to bat but Trott was on strike.
Trott took twos off the first two balls but was caught behind off the next to end a 129-ball innings that featured just eight fours.
England saw captain Andrew Strauss (33) and Craig Kieswetter (20) make a rapid start.
But paceman Rubel Hossain, in for dropped spinner Faisal Hossain, struck twice as both openers, as happened on Thursday, fell in quick succession.
Strauss tried to uppercut Rubel but succeeded only in steering to stand-in keeper Jahurul Islam.
And 49 for one became 58 for two when the same duo dismissed Kieswetter.
And, next ball, that might have been 58 for three.
Paul Collingwood, whom replays suggested should have been given out caught behind for a golden duck, had made 10 when he was lbw to spiner Abdur Razzak.
Replays indicated he'd got an inside edge but Pakistani umpire Asad Rauf give him out and England were 86 for three.
Eoin Morgan was then lbw, hitting across the line, for one to Razzaq before Michael Yardy (10) was bowled by a ball that kept low from Shakib.
Earlier Bangladesh had been restricted to a seemingly modest total of 236 for seven after Strauss won the toss.
But Bangladesh opener Imrul Kaye made a valuable 76 in an innings where the next best contribution was Mahmudullah's 24 not out.
Ajmal Shahzad, recalled in place of fellow Yorkshire seamer Tim Bresnan, took an ODI best of three wickets for 41 runs.