England dominated the vast majority of the first half, but it was Croatia who created the first chance after less than two minutes when Jordan Pickford's mistake saw the ball land at the feet of Ante Rebic, who could only fire over with the keeper out of position.
It was a rare moment of attacking note for the visitors in the first half, though, and England created the bulk of the chances within a 15-minute spell during the opening period.
The resulting corner provided an even better chance, though, with John Stones flicking the ball to an unmarked Kane, who got his finish all wrong from close range and could not turn it home.
An incisive aerial pass from Fabian Delph enticed Kalinic off his line shortly afterwards and his clearance only went as far as Kane, who saw his first shot blocked and his second saved by the retreating Croatia goalkeeper.
The Three Lions were only missing a goal from an otherwise encouraging performance, and they were denied once again midway through the first half when Ben Chilwell's dipping volley was shovelled away by Kalinic.
Croatia fired a warning shot as to the dangers of such profligacy when Ivan Perisic fired over from inside the area, but England were soon back on the front foot and Ross Barkley rippled the side-netting with a volley moments later.
The visitors were fortunate to go into the break still level, and England soon set about looking for the opener once again in the second half when Sterling drew a save from Kalinic.
It was Croatia who eventually broke the deadlock, though, as Kramaric collected the ball inside the area and kept his composure before firing a deflected effort past a helpless Pickford to leave England stunned.
Suddenly England needed two goals - with defeat and a score draw both seeing them relegated - but Croatia could have put the game beyond them shortly after taking the lead when Marcelo Brozovic lifted his finish over the crossbar.
England restored parity 12 minutes from time when Kane poked the ball towards goal after bringing a free kick down on his chest, and Lingard was there to ensure it crossed the line just five minutes after coming on as a sub.
Croatia were by no means down and out, though, and it took a goalline clearance from Lingard just four minutes after his goal at the other end to keep England on level terms.
It proved to be a pivotal moment in the match as England completed their turnaround five minutes from time when Chilwell's free kick from the left flank was turned in by a poacher's finish from Kane.
Such was the fragile nature of the group that a late Croatia equaliser would have seen England fall from top of the group to bottom, but the visitors could not come up with a response in the final five minutes as Southgate's side booked their place in next summer's inaugural semi-finals.
ENGLAND (4-3-3): Pickford; Walker, Gomez, Stones, Chilwell; Barkley (Alli 63'), Dier, Delph (Lingard 73'); Sterling, Kane, Rashford (Sancho 73')
CROATIA (4-2-3-1): Kalinic; Vrsaljko (Milic 26'), Lovren, Vida, Jedvaj; Modric, Brozovic; Kramaric, Vlasic (Rog 79'), Perisic; Rebic (Brekalo 46')