Pavle Strugar, 71, who commanded Yugoslav forces during the siege, was found guilty on two of six counts of violating laws and customs of war: for not doing enough to deter the attack on civilians and protected buildings, and for not punishing the officers who were responsible.
Two civilians died and three were wounded when forces under Strugar's command shelled the heart of Dubrovnik from land and sea on 6 December 1991, after Croatia declared independence from Serbian-dominated Yugoslavia.
The mediaeval and Renaissance old town - a Unesco World Cultural Heritage Site - suffered heavy damage.
The International Criminal Tribunal for former Yugoslavia found Strugar not guilty on four other counts, including murder, cruel treatment and unjustified devastation.
It said it had taken Strugar's age and failing health into account when deciding his sentence.
"Your criminal liability arises because you failed to take adequate measures to stop the shelling of the old town and because you failed to ensure that those responsible for the attack were disciplined"
The defence team said it would appeal.
The tribunal has already sentenced Yugoslav navy Vice Admiral Miodrag Jokic, who ordered the shelling and was under Strugar's command, to seven years in jail. Jokic is also appealing.
Presiding judge Kevin Parker told Strugar: "You were not the immediate commander of those responsible. That was Admiral Jokic.
"Your criminal liability arises because you failed to take adequate measures to stop the shelling of the old town and because you failed to ensure that those responsible for the attack were disciplined."