Office workers had to run in front of a bus to stop it after it hit a woman in the city on Wednesday afternoon.
John Preston said he was eating a pie with a colleague when he saw the Sydney Buses vehicle run over the woman as it turned into Clarence Street from Erskine Street.
"The next thing I hear is a thump and a crunch and a never-ending scream," Mr Preston said.
"The bus driver didn't know he'd hit her. If we hadn't run out on to the street and told him, he would have kept going."
Buses heading north out of the city over the Harbour Bridge have been delayed by up to an hour because of the incident, the Transport Management Centre said.
The woman,who Mr Preston said appeared to be an office worker aged in her 30s, was hit about 3.50pm and was trapped under the bus.
Paramedics freed her just before 6pm and took her to hospital with critical injuries.
Mr Preston, who works on York Street, said the bus that hit the woman was empty and the woman had been hit near the middle of the vehicle as it turned the corner.
He had rung triple-0 and gone to the woman's aid, along with other passers-by.
"She was still talking and wanted her husband called.
"It was terrible, absolutely terrible."
A worker in a building across the street said emergency services had been “giving the woman blood” and had jacked up the bus to free her.
All northbound lanes are closed on Clarence Street between King and Margaret streets. Erskine Street is closed eastbound at Kent Street.
Commuters have been warned to expect delays.
Passengers wanting to cross the Harbour Bridge are being advised to catch buses on Kent Street as transport is being diverted away from Clarence Street.
Route L90 buses to Palm Beach are also travelling out of the CBD along Kent Street instead of via Wynyard Park, while Hillsbus passengers on Clarence Street are being directed to other stops by bus marshals.
Sandwich maker Victor Guo was working at Pie Face when the woman was hit.
"I was making sandwiches out the back," he said. "I didn't see what's going on, I just heard screaming."
The incident is the latest in what has been a shocking start to the year on roads through Sydney and NSW.
About 2pm on Wednesday, a man trying to cross The Grand Parade in Monterey in southern Sydney was killed by a truck travelling north.
Prior to the fatality at Monterey, 32 people had died on NSW roads in 2014, compared to 14 for the same period last year.