The Africa Cup of Nations semi-final between Ghana and hosts Equatorial Guinea was described as a "war zone" after play was suspended for more than 30 minutes because of crowd trouble.
Players ducked bottles thrown from the stands, Ghana fans sought safety behind a goal, riot police used tear gas and a helicopter hovered over the stadium.
"It's now like a war zone," the Ghana Football Association (GFA) tweeted, claiming "barbaric acts of vandalism" while its president told the BBC it was lucky no-one was killed.
When play resumed, Ghana sealed a 3-0 win to reach Sunday's final, where they will play Ivory Coast, who beat DR Congo 3-1 on Wednesday.
GFA president Kwesi Nyantakyi blamed Equatorial Guinea supporters for "unprovoked violent attacks" inside the stadium.
"We are lucky that we haven't lost any lives, though people have sustained various degrees of injuries arising from objects thrown at them," he told BBC World Service.
Trouble flared at half-time between Ghana and Equatorial Guinea.
Ghana players had to be protected by riot police using plastic shields as they left the field, already 2-0 up in the tie.
The second half was then halted eight minutes from time when Ghana supporters sought sanctuary on the field after coming under attack.
Confederation of African Football (Caf) officials had used the public address system to threaten to call off the game if the crowd did not stop pelting Ghana's players.
Nyantakyi called security at the match "a flop" but said he expected "more decency" from fans.
"I don't think this is a fair commentary of Africa," he said.
"This has been a very successful tournament and this isolated incident of violence will leave a slur on the reputation of African football.
"A high profile game of this nature should have attracted policemen, intelligence officers and military.
"I couldn't have counted 50 policemen at the stadium. The rest were from Angola, who were not familiar with the terrain, so they didn't know how to handle the situation.
"So the Ghanaian fans were left at the mercy of these violent fans."
BBC World Service reporter Piers Edwards was with the visiting supporters as they left the stadium and said some were taken to hospital.
He picked up several objects that ended up on the pitch, including a jagged piece of broken mirror, half a plate and a rock.
Play finally resumed after many fans had left the stadium, with both teams seeing out the final three minutes.
BBC World Service reporter Nick Cavell in Malabo:
"The trouble began before half-time, with fans angry at some refereeing decisions. Bottles were thrown onto the pitch and the Ghana players were forced to leave the pitch at half-time under a tunnel made of riot shields. The bottle throwing continued after the break.
"Soon after the third goal went in, a section of Ghana fans pushed through a gate and made it onto the running track behind the goal. With them so close to the pitch, the match was stopped. Equatorial Guinea players pleaded with fans to stop throwing objects but to no avail.
"A police helicopter tried to intimidate fans by flying just 20 or 30 metres above their heads. Then police moved in with tear gas and batons to move the fans away. The press box emptied, too, as the tear gas spread.
"The Ghana fans were eventually guided to an empty area of the stadium and the match restarted for a token few minutes."
The Confederation of African Football (Caf) refused to take questions on the crowd trouble after the match.
"I didn't know what was happening," said bemused Ghana coach Avram Grant, the former Portsmouth, Chelsea and West Ham manager. "I saw something on the pitch, some incident or violence.
"I can't say I wasn't concerned, I care about the security of my players, it's very important to me."
BBC World Service reporter Steve Crossman in Malabo:
"The Ghana fans had Equatorial Guinea fans pelting them with bottles and stones. I saw a couple of seats thrown and then the riot police stepped in.
"The Equatorial Guinea fans, regardless if they were responsible, suffered, too. Tear gas was used. It got to our commentary position and we had to abandon our broadcast.
"You could see fans hanging off the stadium walls as they tried to get to safety. All in all, nobody comes out of this in any good shape at all."
Equatorial Guinea coach Esteban Becker added: "I am sad about the way the fans acted out there."
Emilio Nsue, captain of Equatorial Guinea, said he was proud of the team for reaching the semi-finals but wanted to apologise for the crowd trouble.
"Regarding the public and the way they acted, I've never experienced that," he said. "I'd like to say sorry. It was something we've never experienced before."