Bayern Munich winger Davies put Canada ahead after only 68 seconds, darting into the box and meeting Tajon Buchanan’s cross with a towering header in the game’s first attack.
Croatia did not panic after falling behind, though, and created numerous chances, with striker Andrej Kramaric seeing a goal ruled out for offside.
The former Leicester player did equalise when he found the net with a first-time angled shot from Ivan Perisic’s pass, and Marko Livaja put Croatia ahead with a rasping drive from the edge of the box.
Kramaric was denied by Milan Borjan’s fine save in the second half, and at the other end, Dominik Livakovic acrobatically tipped over Jonathan David’s long-range curler.
Hoffenheim frontman Kramaric got his second of the game by coolly converting into the far corner, and substitute Lovro Majer wrapped up the match by netting in injury time.
Canada may have scored a goal, but they are still waiting for their first point in a World Cup group match and now cannot qualify for the last 16.
Relive Croatia’s win over Canada
Croatia keep their cool
You might have expected the first meeting between Croatia and Canada to be a straightforward affair – in fact it was anything but, with a war of words taking place beforehand.
Canada’s English boss John Herdman said before the game they would “eff Croatia”, with opposition manager Zlatko Dalic responding by saying that was not a “sign of respect”.
Once on the pitch, Canada looked to stick to their word by scoring inside just two minutes courtesy of star winger Davies’ tremendous header.
It was a wonderful moment for the 22-year-old to net his country’s first World Cup goal, having been born in a refugee camp after his parents fled civil war in Liberia and moved to Canada when he was five.
But the joy and exuberance of youth turned to despair against a wily Croatia who have vast experience and kept their cool to hit back.
They put a ragged Canada backline under pressure, and Kramaric’s leveller and Livaja’s lovely strike on the stroke of half-time turned the game around.
Jonathan Osorio struck inches wide shortly after coming on as a second-half substitute as Canada – who are playing in their first World Cup since 1986 – looked to find a way back into the game.
But Kramaric struck again from a second Perisic assist, gloriously taking down the cross and stroking in, before Majer punished Kamal Miller’s horrible mistake as Croatia ended up comfortable winners.
They have now lost just once in their last 18 outings, and must face world number two side Belgium on Thursday to secure a spot in the next round.