After winning the toss and electing to bat, the Australians managed only 198 for five from their 50 overs on a slow wicket.
Mike Hussey again anchored the Australian effort with an unbeaten 57 from 72 balls, while Cameron White added some late runs with 22 not out from 24.
The Australians had looked set to fall well short of 200, until a late flurry from the pair added 23 runs from the last two overs.
Having been beaten by 180 runs and eight wickets in the first two matches, it was a much-improved effort by Bangladesh on a wicket that suited their bowlers, and particularly the spinners.
The bowlers were able to restrict the strokeplay of the normally aggressive Australians and were superbly backed by their fielders, with three run outs robbing the home side of any momentum.
Spin duo Shakib Al Hasan (0-25 from 10 overs) and Abdur Razzak (1-22 from 10) both bowled superbly in the conditions.
Australian opener Shane Watson (27), struggling captain Michael Clarke (25 from 66 balls) and middle order batsman David Hussey (11) were all run out, the latter two both by direct hits at the bowler's end at the attempted quick singles.
Those dismissals enabled Bangladesh's bowlers to apply some overdue pressure to the Australians, who struggled to break free.
The home side went 27 overs without a boundary before Mike Hussey finally broke the drought in the 42nd over.
Bangladesh made two changes to their side for Saturday's match, with Mahmudullah and Farhad Reza replacing Mehrab Hossain jnr and Nazmule Hossain.
Reza's introduction into the attack for the first time in the series was successful, bowling opener Shaun Marsh (30), who had already been dropped, with his first ball.