Two people, including an eight-year-old boy, were killed when a double-decker bus ploughed into a Sainsbury's supermarket, West Midlands Police said.
A woman in her 70s was also killed when the bus lost control and smashed into the side of the building in Coventry city centre.
The boy, who was from Leamington, was travelling in the top deck, while the woman, who was from Nuneaton and walking along the street, both died at the scene from their injuries.
A nine-year-old girl, who was also travelling on the top of the bus, was seriously injured and is receiving treatment at Birmingham Children's Hospital.
Five other people suffered minor injuries and are receiving hospital treatment, while one person was treated and discharged at the scene.
Shocked locals described "absolute mayhem" as they tried to rescue children trapped under the seats on the top deck.
Maneer Fiaz was getting some food from a shop opposite when he heard a "loud bang" and saw people running to the bus.
He told Sky News: "I came outside the shop and saw the bus was smashed into the cashpoint. I ran towards the driver and he was surprisingly alive.
"People were trying to get the driver out. The kids were trapped underneath the seats upstairs. It was absolute chaos.
"We got the driver out through the window.
"People were just running towards the scene trying to help people get out. The only thing on people's minds was the two kids stuck on the top, they couldn't get out of the bus. People were just waiting for the ambulance service to come."
The bus collided with a number of cars and a lamppost before crashing into the open supermarket in Trinity Street at around 6pm on Saturday, officers said.
An air ambulance, paramedics, five ambulances and the Hazardous Area Response Team were all on the scene.
Superintendent Paul Keasey, head of the Central Motorway Police Group, said: "Our thoughts are with those affected by this evening's tragic event; we have specially trained officers with the families at this difficult time.
"We hope to carry out a swift investigation and I would like to thank people who have already come forward who witnessed the collision.
"This is a busy area of Coventry city centre and we hope to keep disruption to a minimum as our investigation continues; no-one has been arrested at this stage."
Sainsbury's was open at the time, but it is unclear if anyone inside the store was hurt.
Police have launched an investigation into what caused the crash and road closures remain in place around the area.
A spokeswoman for Stagecoach Midlands confirmed one of its X18 buses travelling from Coventry to Leamington was the bus involved in the crash.