Fatima Popura and her husband Vadim watched the violence in Odessa escalate on their television screens, but as night fell they went out to see what was happening at the city's trade union building, which had been at the centre of fighting between pro-Russia and pro-Ukraine groups.

When they arrived, the deadly fires started by molotov cocktail-throwing activists were mostly out. Walking around amid riot police and protesters, the couple noticed a row of bloody bodies by the side of the road.

When they went closer, Fatima recognised her 17-year-old son among the dead. Vadim, named after his father, was wearing a tracksuit with improvised body armour. His face was covered with dried blood.

Vadim had been among those trapped in the burning building and had been killed when he chose to jump from the upper storeys to escape the flames, Fatima said as she choked back sobs. Her husband looked on blankly.

"We have lost our son and we do not know how to grieve," she said as medics and investigators looked over the corpses in the headlights of a parked car.

Fatima denied that Vadim was a separatist seeking to join parts of Ukraine with Russia, or that he would have been aggressive. "It is war. It is civil war. I can't describe it any other way," she said. Her husband said that their son recently stopped taking part in pro-Russia protests. "But for some reason he came today."

The Popuras' story is one of many similar tragedies that have played out in this Black Sea resort city in the wake of street battles on Friday that culminated in desperate hand-to-hand fighting in the burning trade union building.

Local prosecutors said on Saturday that 46 people died in the violence. Odessa's Number One hospital had treated 90 people with wounds caused by gunshots, knives and splinters, according to head doctor Andrei Vegerzhinsky. The injured had also been taken to four other hospitals in the city, he said. By Saturday morning, bodies had been removed from the streets outside the trade union building and police had established a cordon around the site. People brought flowers, and large piles of roses, lilac, tulips and carnations lay by the blackened doors. Orthodox priests led prayers for the dead.

By midday, a crowd of about 1,000, mainly pro-Russia protesters, angry at the apparent failure of the police to prevent the killings, had gathered outside and were chanting "Shame, shame, shame!" at police. There were also chants of "Russia, Russia, Russia!" and "Putin, Putin, Putin!"

Small scuffles broke out and two TV crews, accused of lying, were assaulted. Protesters, many in tears, screamed at police officers. In an apparent attempt to calm the crowd, police let several people enter the building.

There were 32 corpses still inside, said Moris Ibragimov, a pro-Russia activist, after leaving. "Everyone inside was burnt. You can't recognise anyone because of the burns – they looked like plastic [dolls]," he said.

Alexander Kiselyov said people were lying as they died: on stairs and in burnt-out offices. "There's a mountain of bodies in there," he said.

The violence that took hold in the port city began about 3pm on Friday when masked men attacked a pro-Ukraine rally attended by football fans. Subsequent running street battles between well-armed men culminated in the assault on the trade union building where the pro-Russia fighters made a last stand. Many pointed the finger at Odessa's security forces, which were conspicuous by their absence.

"People were burning for an hour before the police arrived," said Albina Lukina, 43, who was in the crowd outside the trade union building.

Local officials echoed this anger. Valentin Nemirovsky, governor of the Odessa region, wrote on Facebook: "If the police had followed the orders of regional leaders and not concerned themselves with diplomacy, everything would have been different today. But, as always, they didn't think about the country but about their own safety. Shame."

Odessa, a popular holiday destination known for its multiculturalism and relaxed atmosphere, was marking May Day as the violence broke out. Police, activists and local journalists appeared to be have been caught off-guard.

Oleg Konstantinov, editor of local news site dumskaya.net, who was in hospital with gunshot wounds to his back and leg, and splinter wounds in his arm, said he had sent most of his reporters home for the two-day holiday.

As Odessa grappled with the bloody tragedy, accusations about responsibility flew between Kiev and Moscow. Ukraine's security services said groups of foreign fighters coordinated by Russia had sparked the violence.

The Kremlin has dismissed claims that Russian units are operating inside Ukraine, and many pro-Russia activists instead laid the blame at the door of fighters from the extreme Ukrainian nationalist group Right Sector.

Carrying a walking stick and wearing a jacket with medals from his service in the Soviet army during the 1980s war in Afghanistan, Alexander Lugansky had come to the square outside the trade union building to lay five red carnations. "Kiev and Moscow are both guilty," he said. "Odessa will not forgive this."