Mane scores and misses penalty as Senegal squeeze through
The Liverpool star struck on 15 minutes with a close-range shot after a passing move carved open the Ugandan defence in Cairo.
Mane later missed a penalty - the second time he has failed to find the net from 12 yards in as many matches - but his three-goal tally from three matches moved him ahead of 11 scorers with two each.
In the quarter-finals, Senegal will face fellow west Africans Benin, who stunned Morocco earlier, winning a penalty shootout after a 1-1 draw following extra time.
A fiery start at the Cairo International Stadium to the second last-16 match saw two Ugandans and one Senegalese yellow-carded within 10 minutes of the kick-off.
As tempers cooled, Senegal scored through Mane, who shared the Premier League Golden Boot last season with Liverpool team-mate Mohamed Salah and Pierre-Emerick Aubameyang of Arsenal.
A Ugandan pass out of defence was intercepted and two quick, slick passes sent Mane clear to fire left-footed past Onyango - one of the top goalkeepers in Africa.
There were more cards than attempts on target in the opening 45 minutes, which ended with Senegal comfortably retaining a one-goal advantage.
The match not only lacked goalmouth excitement, but also atmosphere with a crowd of just a few thousand dotted around the 75,000 stadium, where the final will be played on 19th July.
Scorching heat, costly tickets and a lack of interest by Egyptians in teams other than their own Pharaohs are some of the reasons for the poor attendances.
Senegal had a great chance to double their lead when Mane was fouled by Onyango, but the Liverpool star failed to convert the penalty, a fate he also suffered against Kenya.
He aimed for the right corner, but Onyango, who was lucky to still be on the pitch after somehow escaping a second yellow with his foul on Mane, guessed correctly and made a brilliant two-handed save to keep the Cranes in the match.
As free-kicks were continually conceded, Uganda had few opportunities to equalise, but did come close on 80 minutes when goalkeeper Alfred Gomis pushed away an Allan Kateregga free-kick.