Air Serbia's flight from Serbia landed at Zagreb Pleso airport at 0800 GMT, becoming the first direct air link between the two capitals since 1991.
Flights between Zagreb and Belgrade were interrupted when war erupted after Croatia proclaimed independence from federal Yugoslavia.
The move was opposed by ethnic Serbs who launched an armed rebellion with political and military support from the Belgrade regime.
The war claimed some 20,000 lives.
