Leo Östman gav hemmalaget ledning redan i den sjunde minuten. Hans tredje mål på tre matcher.
Elfsborg dominerade första halvleken. Men bara 1-0 i paus straffade sig.
I början av den andra halvleken kombinerade sig Mjällby fram. Jeppe Kjaer avslutade distinkt och kvitterade.
Djupt in på tilläggstid hade Elfsborg chansen att avgöra. Men målvakten Robin Wallinder räddade Frederik Ihlers avslut ut till hörna.
Publiken buade efter slutsignalen. Ett alltför passivt Elfsborg hade chansen att gå upp på andra plats efter Hammarbys förlust.
Mjällby hade ett brutalt skadeläge. Axel Norén, Timo Stavitski, Elliot Stroud, Tom Pettersson, Max Nielsen, Viktor Gustafson och Abdoulie Manneh saknades alla.
Mittbacken Abdullah Iqbal fick dessutom en känning i ryggen på uppvärmningen.
– Vi förlorade sju spelare på sju dagar – det måste vara världsrekord, säger tränaren Karl Marius Aksum.
Resultatet gynnar serieledande Sirius som nu har bättre luft nedåt i tabellen.