Gyan goal sends Ghana into final
Gyan, who also scored the only goal in the quarter-final win over hosts Angola, headed home in the 21st minute.
Nigeria enjoyed long periods of possession and created the best chances but Ghana held firm.
The Black Stars, who last won the continental tournament in 1982, will meet either holders Egypt or Algeria in Sunday's final at Luanda's November 11 stadium.
"I told my players we were going to play to reach the final and not to produce beautiful football, only the result matters, it's all about the result," Ghana coach Milovan Rajevac told a news conference.
"Nigeria had a few good chances. Our team is very young and we let them be dangerous because of this lack of experience," he added. "Defence is a very important thing in modern football."
His Nigeria counterpart Shaibu Amodu would not say Ghana were the better team.
"I would not say we lost against a better side. We lost to a youthful and enterprising side. We had possibilities to win this match but this is football."
Nigeria, eliminated by Ghana two years ago in the Nations Cup quarter-finals, needed freshening up after being forced to play 120 minutes and a penalty shootout to advance from the previous round.
Amodu made three changes from the team that beat Zambia, with Obafemi Martins taking over from Yakubu Ayegbeni up front.
The Wolfsburg striker proved a threat to the Ghana defence in the early stages as Nigeria made the better start against a Ghana side featuring four players from their triumphant Under-20 World Cup team.
But Ghana, without the experienced Michael Essien, John Mensah and Stephen Appiah through injury, went ahead against the run of play when Gyan nipped at the near post to head home from a Kwadwo Asamoah corner.
Gyan almost doubled the lead three minutes later with a lob that went just over Vincent Enyeama's bar.
In the 28th minute, Ghana keeper Richard Kingson stretched to his left and parried away a shot from Martins.
Nigeria piled on the pressure after the break and Martins went close again at the hour when his attempt to lift the ball past Kingson bounced off the Ghana keeper's chest.
Inter Milan striker Obinna Nsofor was brought in for midfielder Yusuf Ayila and Yakubu replaced Peter Odemwingie in an attempt by Amodu to sharpen his attacking line.
The move almost paid off immediately when a forceful cross from Elderson Echiejile took a deflection off Yakubu's knee and went just wide.
Nigeria had another great chance 15 minutes from time when Martins raced into the box but Samuel Inkoom got back to snuff out the danger.