Victor Moses scored twice from the penalty spot in the last 10 minutes to send the Super Eagles through.
Nigeria ended in second in Group C, after Burkina Faso and Zambia drew 0-0.
The Super Eagles dominated the first half, as has come to be expected this tournament, but again were unable to make their possession count.
They created plenty of chances, but were not able to turn those opportunities into goals.
Luckily for Nigeria, Ethiopia were as unconvincing in front of goal, creating just one half-chance in the first half, when Saladin Said sent a free header wide of the target.
Efe Ambrose could have headed home from a free-kick early in the match, but sent the ball over the crossbar.
Shortly after, Ikechukwu Uche headed wide after a free-kick from Moses, and a few minutes later Elderson Echiejile forced a save from Ethiopian keeper Sisay Bancha, with a header from a corner.
Just before half-time Kenneth Omeruo had the best chance of the half, as the ball fell at his feet after some confusion in the box, but the defender shot over the bar from close range.
After the restart Omeruo was back in the thick of things, this time with a header on goal, but – again – it went just over the bar.
10 minutes from time Moses was pulled down inside the box by Alula Girma, and coolly converted the spot-kick to put the Nigerians 1-0 up.
Five minutes later Moses went on the counter-attack, and was brought down by Sisay Bancha in the box. The keeper was shown his second yellow card and dismissed.
Ethiopia had made all three of their substitutions, and Addis Hintsu had to take the gloves for Moses’ second penalty. He went the right way, but the ball hit the back of the net and sealed the victory for Nigeria.