A 2-day-old cease-fire between pro-Russia separatists and Ukrainian government troops was violated several times early Sunday as Ukrainian positions were bombarded with artillery and missile fire.
The barrage, which began shortly after midnight, destroyed a gas station near a checkpoint on the outskirts of Mariupol.
In another violent incident, unknown attackers with automatic weapons fired on a car in the city's center about 1 a.m. and killed two people. The car was carrying three adults and two children. The two slain were adults; the others in the vehicle were injured and taken to a hospital.
Another post-midnight attack on a civilian car elsewhere in Mariupol left two people wounded, said a spokesman for the Azov Battalion, a volunteer Ukrainian militia.
"It looks as if enemy infiltrators were trying to stage these random attacks to sow panic in the city," said the spokesman, whose code name is Baida.
Separatist leaders in the Donetsk region, meanwhile, accused Ukrainian troops of violating the truce and threatened retaliation.
"By all accounts, [Ukrainian President Petro] Poroshenko is not completely in charge of his troops," Vladimir Kononov, a defense official of the self-proclaimed Donetsk People's Republic, said in a statement on the group's website. "For Kiev, the goal of the truce is to regroup and deal us a strike. We are ready for it. If provocations continue, I will have to give an order to shoot to kill."
No military casualties were reported in the attacks Sunday. It was unclear whether Ukrainian forces responded, but artillery fire could be heard outside the city until 2 a.m.
The truce had been called Friday to end five months of conflict in eastern Ukraine that has cost nearly 3,000 lives.
Mariupol, with a population of 500,000, the second-largest city in the Donetsk region, was still recovering from a week of being threatened by separatists backed by Russian troops who had crossed the border late last month. Thousands of residents fled the city, fearing an imminent assault.