Morgan Rogers put England ahead in the 24th minute, only for Petar Sucic to level for Croatia in the 59th.
England won a penalty in the 64th minute and captain Harry Kane made no mistake, moving England onto 12 points, three clear of leaders Spain.
Croatia stayed stuck on 3 points. They could not avenge last month's 0-7 thrashing at the hands of England.
The newspaper Mundo Deportivo ran through the main talking points, with Croatia starting brightly, playing for their pride after that heavy 0-7 defeat in Rijeka on 3 October.
The Three Lions soon took a grip on proceedings, and it was Morgan Rogers who handed England, third at the 2026 World Cup, the lead.
Harry Kane got the move going, feeding Jude Bellingham, who in turn teed up Morgan Rogers. The Croatian defence could not stop the Chelsea midfielder from opening the scoring in the 24th minute.
Barcelona's Anthony Gordon had two decent openings, but dragged both shots wide.
Thomas Tuchel's side failed to add to their lead and paid the price. Petar Sucic grabbed the equaliser, pouncing on a mistake from Jarell Quansah, who tried to clear the ball backwards. The leveller arrived in the 59th minute.
On a special night, Harry Kane had the final word, converting a penalty after Quansah was held by Ivan Smolcic.
The referee checked the incident on VAR and pointed to the spot. England's captain stepped up and buried it for the winner.
Luka Modric came on in the 76th minute and sparked a clear lift in Croatia's display. They carved out chances that could have brought them level, but they could not take them.
England therefore booked their place in the last eight. Next up is a trip to Spain on Sunday at the Metropolitano, with top spot in the third group of the top tier on the line.





