Leandro Damiao equalised for Brazil after Mario Martinez put Honduras ahead. Roger Espinoza then restored the Central Americans’ lead.
However, Neymar brought Brazil level again from the penalty spot before Internacional striker Damiao scored his second at Newcastle’s St James’ Park.
Honduras gave Brazil, five-times world champions but never Olympic gold medallists, a huge scare despite having midfielder Wilmer Cristiano sent off with just 32 minutes gone for a second bookable offence, with Espinoza collecting his second yellow card just before the final whistle.
Brazil’s Marcelo admitted: “Honduras made us work really hard. In the end, we showed our quality and we prevailed.”
Honduras’s Jose Mendoza refused to hold German referee Felix Brych responsible for the end of his side’s Olympic dream, saying: “I don’t think we can blame the referee for our defeat.
“I think we played a great game and I also think the referee didn’t have his best day, but we can’t blame him for the result.”
Brazil will now face either hosts Great Britain or South Korea, playing later in Saturday’s fourth quarter-final, at Manchester United’s Old Trafford ground on Tuesday.
Japan stayed on course for an Olympic football double as their men’s team joined the women’s side in reaching the semi-finals following a 3-0 win over 10-man Egypt on Saturday.
Goals from Kensuke Nagai, captain Maya Yoshida and Yuki Otsu took Japan through against an Egypt side who played more than half the match a man down after defender Saadeldin Saad was sent off in the 41st minute.
Nagai gave Japan a 14th-minute lead, shooting into an empty net after Egypt goalkeeper Ahmed El Shenawi collided with one of his own defenders in trying to deal with a through ball.
Egypt, despite being down to 10 men, came close to an equaliser when Mohamed El Neny’s dipping shot was well-saved by Japan keeper Shuichi Gonda.
However, shortly afterwards, Japan put the result beyond doubt with two goals in the space of five minutes.
The unmarked Yoshida’s 78th minute header made it 2-0 before another header, from Otsu, completed the scoring.
Afterwards, a delighted Yoshida said: “We have to take the medal, that’s all. That’s what I say to the people in Japan.”
Japan will play Mexico in the semi-finals after the Central Americans survived a dramatic fightback by Senegal to win 4-2.
Senegal came from 2-0 behind at London’s Wembley Stadium, in front of a crowd of more than 81,000 to force extra-time.
Mexico will return to Wembley after goalkeeeper and captain Jose Corona made several fine saves.
His side side went ahead in the 10th minute when Jorge Enriquez headed in a free-kick and made it 2-0 just after the hour through Javier Aquino.
Moussa Konate, the tournament’s top scorer, pulled a goal back in the 69th minute, for his fifth goal the first that Mexico had conceded this Olympics.
And seven minutes later it was 2-2 when substitute Ibrahima Balde headed in from a corner.
In extra-time Giovani dos Santos restored Mexico’s lead before the result was put beyond doubt in the 109th minute when Hector Herrera, who will miss the semi-final through suspension, headed into an empty net.
“I’m so happy,” said dos Santos. “It’s an unbelievable experience for me and the team.”