A Sigalert was issued and all westbound lanes were closed due to the crash, which happened shortly before 4 a.m. at the 110 Freeway interchange, the California Highway Patrol said.
Thirty-two adults were on the bus at the time of the incident, the Los Angeles Fire Department said. Four were hospitalized in serious condition, five in fair condition and 16 in good condition, according to fire officials. Seven declined to be taken to a medical center.
News video shows several bloodied passengers walking out of the bus as first responders arrive at the scene.
"I look up from my phone and I see a bus, just tilted and just dragged across the whole highway," said a witness who gave his name only as Betim. "We stopped in front of the bus, helped some people out in the front and tried to get as many people out of the bus as we could."
By 8 a.m., crews using two cranes had turned the vehicle upright and towed it away. Spilled diesel fuel was also removed from the roadway. Meanwhile, westbound traffic was backed up for hours on the 10.
All lanes were reopened as of 9:30 a.m., the CHP said.
The cause of the collision is under investigation. According to the Highway Patrol, the bus was en route from San Diego County's Pala Casino to Koreatown when it slammed into several sand-filled crash cushions.
#TrafficCollision; 3:57AM; WB 10 FY X HARBOR FY; https://t.co/Hc4pOQGkpm; Pico-Union; Passenger Bus has turned over on the freeway with approximately 30 adults; At this time 23 adults are in good condition and 7 are in ... https://t.co/1NT2RyWZIp— LAFD (@LAFD) July 14, 2018