Pools of blood, shattered glass and bodies in the street - this was the day when the heart of France turned into a war zone.
As commandos assaulted a Paris supermarket to free hostages, sending locals running in terror, more special forces stormed a building in a small town nearby, killing two men suspected of being Islamist hostage-takers.
The kind of violence that seemed unimaginable in the City of Light concluded more than two days of terrible tension as police hunted the gunmen that massacred 12 people at satirical weekly magazine Charlie Hebdo.
In eastern Paris, police stormed the Jewish grocery store where at least one gunman had earlier taken several people hostage. Explosions rocked the neighbourhood - one lighting up the shopfront in a fireball - and shooting erupted as the commandos burst in.
"It's war!" screamed a mother as she dragged her daughter from the scene.
In the aftermath, an AFP reporter saw a body sprawled by the cash till, surrounded by broken glass. Blood was everywhere. Another corpse was in a bodybag in the street, one of five people killed, including the gunman.
Several other hostages fled from the firing into the arms of waiting police.
But four people were critically injured. Ambulances raced to the scene, joining a jam of police vans and other emergency vehicles, all under the whirr of helicopters.
"There were police officers running in every direction," said Virginie Handani, 35, who lives two floors above the supermarket.
Final battle in Dammartin-en-Goele
Moments before, other special forces assaulted a printers' business in Dammartin-en-Goele outside the capital, where the two main suspects in the Charlie Hebdo massacre had holed up with one hostage.
Explosions thundered and smoke poured from the roof of the building. The two brothers inside, who had led thousands of police on a wild manhunt for more than 48 hours, ran out in a desperate last stand and were gunned down. The hostage was saved.
The fiery denouement came at the end of a day when the abrupt arrival of huge numbers of elite police both in the capital and in Dammartin-en-Goele made the likelihood of a final battle appear inevitable.
"It happened very, very quickly. We saw helicopters and suddenly we saw CRS (elite police) all around us. We started to panic a bit," said Stephane, 45, who works in a hazardous materials business in Dammartin-en-Goele, as he described his frightening morning.
"They just gave us enough time to grab something warm to wear outside," he said.
Police snipers set up on rooftops in the non-descript town and van after van of reinforcements deployed. Masked and helmeted troopers with automatic weapons could be seen peering out of a blue police helicopter hovering overhead.
They didn't have long to wait before going into action.
Shock and terror in Paris
Meanwhile, at the Hotel Ruisseau in the French capital, opposite the Jewish supermarket, the shock and suddenness of events was just as intense.
Guests were tucking into lunch when gunfire broke out across the street - the moment that a hostage-taker seized the store, spreading the country's terror nightmare back into the capital.
"We heard shooting, it all happened very fast. Police deployed very quickly," hotel manager Pascal told AFP by telephone.
The grocery store hostage-taker is reported to have told French BFMTV by telephone that he had co-ordinated his action with those responsible for the Charlie Hebdo massacre, with security sources confirming he was also wanted for killing a policewoman just south of the city on Thursday.
He said he was acting in concert with Said and Cherif Kouachi - who were themselves reported to have called reporters at the same TV station from the besieged printworks to claim responsibility for the killings in the name of Al-Qaeda in Yemen.
Police had fanned out across the neighbourhood on Paris' eastern edge and closed off streets, shutting down traffic on the city's vital ring road, which runs close by.
"They ordered us to stay hidden inside and to close the curtains," Pascal said.
There, also, the waiting did not last. In a flurry of fire and lead, the drama ended.
In a telling final detail, revealed by BFMTV, the supermarket attacker did not hang up the phone properly, allowing the police to overhear him.
And it was as he knelt to do his evening prayer that they stormed the building.