Dr. Thurairajah Varatharajah, the top government health official in the area, said the shells in at least two of the attacks Sunday appeared to have been fired by the Sri Lankan army.
They caused extensive damage to the overcrowded Puthukkudiyiruppu hospital, one of the last functioning health institutions inside rebel-held territory, he said.
"We're at a loss to understand why people would shell a hospital," said U.N. spokesman Gordon Weiss, who did not cast blame on either side for the attack.
The three attacks hit a kitchen, a chapel and the women and children's wing of the hospital, Red Cross spokeswoman Sarasi Wijeratne said Monday.
The attacks killed nine people and wounded 20 others, she said. The aid agency, which has offices in the hospital, did not say which side fired the shells.
The U.N. confirmed the hospital was hit several times Sunday by artillery shells throughout the day.
"It seems to have struck the pediatric ward, a 30-bed ward filled to overflowing. The last communication that we had from our staff member on the ground was that they were still counting the dead," Weiss said Monday.
Military spokesman Brig. Udaya Nanayakkara said the army was not responsible for the attacks and blamed the rebels, known formally as the Liberation Tigers of Tamil Eelam.
"Now the LTTE is firing very desperately everywhere artillery ... one of these shells may have fallen into that area," he said.
The military has repeatedly denied killing civilians in their offensive to wipe out the Tamil Tiger rebels and end the island nation's 25-year-old civil war with the ethnic separatist group.
Independent reports from the war zone are not available because journalists are barred from the area.
The attacks on the hospital came amid reports of growing casualties among ethnic Tamil civilians trapped with the rebels inside a tiny patch of jungle and small villages. The Red Cross estimates 250,000 are in the area, while the government says the number is smaller.
Varatharajah, the top health official in the northern Mullaittivu district, estimated last week that more than 300 civilians had been killed in the recent fighting. The government denied that. Varatharajah has not updated his estimate.
Speaking by telephone from the hospital in Puthukkudiyiruppu shortly after one of the attacks Sunday night, Varatharajah said hospital workers were having trouble counting the injured because many staff members were too scared to leave their fortified bunkers and the hospital was suffering power cuts, he said.
"We're shocked that the hospital was hit, and this for the second time in recent weeks," Paul Castella, head of the Colombo delegation of the International Committee of the Red Cross, said in a statement. "Wounded and sick people, medical personnel and medical facilities are all protected by international humanitarian law. Under no circumstance may they be directly attacked."
On Monday, the Red Cross called on both sides to provide safe passage for the wounded to leave the war zone.
Both the rebels and the army know the location of the hospital, Varatharajah said.
The attacks took place on a day of heavy fighting in the area, he said.
"There's heavy shelling where there are civilians," Varatharajah said. "They (the shells) are coming from the army side."
Well over 100 injured people came to the hospital during the day, he said.
The Red Cross said more than 500 patients were in the hospital, and the wounded continued to arrive despite the afternoon attack on the facility.
The hospital is so crowded that many patients were forced to sleep on mattresses in the corridor, it said.
The rebels have been fighting since 1983 for a separate homeland for ethnic minority Tamils in the north and east after decades of marginalization by governments controlled by the Sinhalese majority. More than 70,000 people have been killed in the civil war.