European champions Portugal, in impressive form on their return to action after a 10-month hiatus, hit the woodwork three times before Joao Cancelo fired them ahead four minutes before half-time in the League A Group Three match.
Ronaldo, who is on 99 international goals, was ruled out with a toe infection while Croatia were missing key midfielders Luka Modric and Ivan Rakitic after their federation agreed not to pick them before the start of the European club season.
It was the first time Ronaldo had missed a Portugal game since November 2018.
Joao Felix hit the bar, Diogo Jota headed against the post and Raphael Guerreiro's long-range shot struck the upright, rebounded onto goalkeeper Dominik Livakovic's back and flew wide as Croatia's goal lived a charmed life.
But their luck ran out when Cancelo scored before the break with a curling left-foot shot from the edge of the area.
As Portugal continued to dominate after half-time, Guerreiro chipped the ball over the Croatia defence to Jota who controlled it on his chest and slotted his shot home almost on the hour.
Joao Felix, 20, also scored in the 71st minute with a powerful shot which Livakovic got a hand to but could not stop.
Although Petkovic pulled one back in stoppage time, Portugal substitute Silva slid in a fourth goal from Pepe's header with the last kick of the game.