At least 20 people were killed and nearly 300 injured yesterday when a hospital in the last area of Sri Lanka held by the Tamil Tigers was shelled in what one doctor described as the worst day of bloodshed since the start of the military campaign.

The doctor, Thangamutha Sathiyamorthy, blamed the Sri Lankan army for firing shells that landed next to two health facilities in Putumattalan, on the northern end of the tiny strip of the Sri Lankan coastline where tens of thousands of civilians are trapped by the fighting. The military strenuously denied the allegation.

Sathiyamorthy said 22 people, including an 18-month-old child and a medical worker, were killed and 283 injured in the attack, which started soon after dawn yesterday. He described how he found dead and wounded civilians on the site of the first blasts, which occurred as about 500 people queued beside a mother and baby clinic to receive milk powder and food rations.

"We were ready to distribute at 7.30, there were 500 people waiting, then suddenly shells fell," he said. Half an hour later he went back to assess the damage. "I saw there were bloodstains on the road, I saw there were slippers and sandals."

He said he saw five bodies still lying on the ground. "One was about a one-and-a-half-year-old child, another was a 30-year-old lady - she had four children - another one a 60-year-old man, he died while he was sleeping, and another lady died at home ... These were the bodies I found." The 39-year-old doctor, the regional director of Kilinochchi health service, said more people were killed and injured in two subsequent attacks. In the final attack, at about 11am, one member of the hospital staff was killed and another seriously injured.

"Everyone clearly knows it has come from the Sri Lankan army side ... all shells come from their direction," he said.

The International Committee of the Red Cross said one of its aid workers was killed in shelling in the region yesterday, but it was not immediately clear if it was the same incident. International media are not permitted to enter the no-fire zone to verify claims. The Sri Lankan military said it was aware that there had been a number of explosions yesterday morning, shortly after it broadcast a final offer for the rebels to surrender.

But military spokesman Brigadier Udaya Nanayakkara categorically denied that Sri Lankan forces were responsible for the shelling. He said troops had reported hearing explosions from within the zone but suggested they may have been Tamil Tiger mortar fire. He said no artillery had been used by government forces for weeks.

Since stepping up the military campaign since the start of the year the Sri Lankan armed forces have driven the last remnants of the once-powerful Liberation Tigers of Tamil Eelam (LTTE) into a narrow strip of land estimated to be no larger than 20 sq km. Estimates of the number of civilians trapped alongside them vary, with the UN putting the figure at about 100,000 and Sri Lankan authorities claiming it is no more than 40,000.

Yesterday Sathiyamorthy said conditions inside the no-fire zone were now desperate, with 13 people dead from starvation and 69% of children below the age of five showing signs of malnutrition.

"Of course the food supply is inadequate. Many children are at risk. Yesterday we distributed milk powder and I saw very thin children coming to the clinic," he said. He estimated that more than 5,000 people had died since the start of the latest offensive. "Every day they expect some solution because everybody was asked to go to the no-fire zone, but actually the people reached this area and unfortunately the government is shelling this area," he said. "It is a real disaster. We didn't expect this amount of disaster."

Medical staff have set up a temporary hospital in a former school to try to cope with the casualties. Sathiyamorthy said 75% of the civilians trapped in the zone were living in closely packed tarpaulin shelters and were extremely vulnerable to shelling. He estimated that about 100 people a day were being injured and that, of those, about 20 died every day in the hospital. Another 30 or 40 a day were dying outside the hospital, he said, but no accurate figure was available.

"The civilians don't have the facility to take them to hospitals so whenever that happens they are burying them by the site or near places," he said.

The Sri Lankan army believes it is close to a total victory, but faces a dilemma over how to extract the remaining LTTE fighters from among the civilians.