The result left the Croatians third in the group on three points from three games, three behind holders Portugal and world champions France who were playing each other in the evening kick-off (1845 GMT).
Sweden, who have lost all three opening fixtures, have no points.
Croatia coach Zlatko Dalic was pleased with his team's start to the match, played in driving rain at Maksimir stadium.
"We played really well in the opening 60 minutes but we couldn't keep up with our own pace and we struggled in the last half an hour," Dalic told a news conference.
"But I am pleased we found a way to win and we're now looking forward to the home game with France. We are going to reshuffle the starting line-up a bit for that one."
Croatia host France on Wednesday, having lost the reverse fixture 4-2 after they were beaten by the same score by Les Bleus in the 2018 World Cup final.
The home side had the last laugh though as substitute Andrej Kramaric side-footed home the winner in the 84th minute after an unselfish pass by Ivan Perisic, who found space on the left flank.
Kramaric said he played despite struggling with a thigh injury.
"I wish I was in better shape but there is not much to cheer about regarding the injury at the moment," he said.
"I am a bit concerned although I came through today. We should have scored more than one goal in the first half but then we enjoyed a slice of good fortune after they equalised."