Elliot Stroud sköt in 1–0 för gästerna redan i den tredje minuten. Ett distansskott med vänsterfoten som letade sig in bakom målvakt Samuel Brolin.
– Jag känner att jag har yta och då är det bara att ta den och avlossa och den gick in, säger Stroud.
Kvitteringen kom i den 18:e minuten. Aboubacar Keita nickade in 1–1 efter en hörna.
Charles Sagoe Jr avgjorde i den 69:e minuten. Arsenal-lånet ligger tvåa i assistligan men visade att han kan göra mål också.
– Jag försöker alltid att spela med ett leende på läpparna och frihet, säger matchvinnaren.
Debut för nyförvärvet Alexander Almqvist i den 89:e minuten.
– Jag har kämpat hela livet för att få spela allsvensk fotboll så det är ett mål som har uppnåtts, säger mittbacken.
6 785 såg Kalmar ta sin första seger mot Mjällby på 1 819 dagar.