Chasing 273, England kollapsade från 10-0 till 164 ut, med Mehedi Hasan tar 6-77 och Shakib Al Hasan 4-49.
De avfärdade tidigare värdarna för 296 efter att ha tappat fyra fångster.
Bangladesh hade bara slagit Zimbabwe och ett försvagat West Indies laget i 95 tidigare tester, men 108-run seger innebär serien avslutade 1-1.
England behövde sin högsta framgångsrika kör jakt i Asien och såg bra ut efter ett århundrade öppna partnerskap mellan Alastair Cook och Ben Duckett.
Men de förlorade alla 10 wickets i 22,5 overs i den sista sessionen när Bangladesh säkrade den största vinsten i sin historia.
Bangladesh hade förlorat 72 av sina tidigare tester och senast spelade i augusti 2015 på grund av säkerhetsproblem i landet.
Duckett (56) gjorde sitt första test halv-talet men skålades av 19-årige off-spinner Mehedi med den första bollen efter te, vilket föranledde den fantastiska kollaps - den tredje värsta i historien av ett lag som hade varit 100 utan förlust.
Joe Root var Ibw i följande över till Shakib, innan Gary Ballance och Moeen Ali avskedades i samma Mehedi över kort därefter.
Cook blev 59, men trots att han lyckades omkullkasta en uppsägning, blev den engelske kaptenen påkörd av Mominul Haque på en dum punkt.
Shakib avskedade sedan Ben Stokes, Adil Rashid och Zafar Ansari i snabb följd.
Mehedi tog med sig Steven Finns sista wicket för att avsluta med sex i omgången, 12 i matchen och 19 i serien.
Openers Cook och Duckett, som slogs tillsammans för första gången i det första testet i Chittagong, hade bara lyckats med ett bästa samarbete på 26 i sina tidigare tre innings.
Duckett, 22, imponerad av en aggressiv 56, slog sju fyror och en sexa, och spelade ett antal omvända svep och dra skott.
Bangladesh skålade alla fyra spinnare i sessionen leder upp till te men de tog inga wickets i hjälpsamma förhållanden.
Cook hade gjort mål fyra, 12 och 14 i serien men också kämpade flytande i en period som verkade svinga spelet till Englands fördel.
England kommer att ångra sitt misslyckande att ta tidiga wickets som Bangladesh lagt 116 körningar i morgonsessionen och Cooks sida tappade fyra fångster.
Imrul Kayes gjorde 78 poäng men släpptes vid ben slip av Cook utanför Ansari, och sedan av Root off Moeen i de första 10 overs av dagen.
Båda var svåra fångster men Duckett tappade en enkel chans på djup mid-wicket senare i sessionen med Shakib fladdermössen att dra nytta av.
Finn lade också ner en svår dykning chans, medan England valde att inte gå igenom umpirens beslut vid två tillfällen när repris visade att fladdermössen skulle ha getts ut om de hade gjort det.
Kayes innings och 41 från Shakib hjälpte Bangladesh till 268-7 vid lunch, men Stokes (3-52) och Rashid (4-52) hjälpte England slå svansen i 26 bollar efter lunch.
Mediauppspelning stöds inte på den här enheten
Tidigare England spinner Vic Marks på BBC Test Match Special
Det var extraordinärt. Jag tror inte att jag har sett en serie där det varit omöjligt att veta vem som vinner.
Vid tetiden prisade vi Duckett och Cook, men mindre än två timmar senare var matchen över. Jag har inte sett humöret förändras mellan såna sessioner förut.
Ex-England smet Ebony Rainford-Brent
Jag känner mig känslosam för Bangladesh. Det fanns alla dessa frågor om säkerhet och det fanns tvivel om att serien ägde rum. Folket här var så glada att England kom. Det här är otroligt.
Före detta Bangladesh allrounder Athar Ali Khan
Det var en mycket speciell seger för Bangladesh. Jag tror att 160 miljoner människor i Bangladesh kommer att ha klistrats fast vid TV-apparater, radioapparater och telefoner. Jag känner mig privilegierad att vara här och se det.
Bangladesh hävdade sin första Test seger över England som turisterna förlorade 10 wickets för 64 körningar efter te på dag tre av det andra testet i Dhaka.