Jaap de Hoop Scheffer, the Nato secretary-general, said the signing showed the progress in the Balkans since the violence that marked the break-up of Yugoslavia in the 1990s.

Nato leaders agreed at their last summit in April to bring the two countries in, but excluded neighbouring Macedonia after Nato member Greece objected to that country's name, saying it implies a territorial claim on part of northern Greece also known as Macedonia.

The signing is widely regarded as a blow to Macedonia's hopes of catching up with the others and joining at the same time.

Croatia will become the second former Yugoslav nation to join Nato, after Slovenia which entered in 2004.