Elliot Stroud gav gästerna drömstart med distansskott redan i den tredje minuten. Samuel Brolin chansade.
Kvitteringen kom i den 18:e minuten. Aboubacar Keita nickade in 1–1 efter hörna.
I den 69:e minuten avgjorde Charles Sagoe Junior. Han hade brunnit på en chans fem minuter tidigare när Robin Wallinder räddade.
Kalmar hade kämpat sig in i matchen efter den tidiga smällen. Hemmapubliken bidrog till stämningen – närmare 6 000 åskådare var på plats.
I Kalmar FF-podden efter matchen lyfter Toni Koskela fram prestationen och det viktiga stödet från läktarna.
Nästa uppgift för Kalmar är bortamötet med BK Häcken på Bravida Arena.
Källor