Both teams missed penalties in regular time with Ferjani Sassi the Tunisian culprit before Henri Saivet failed for the Senegalese.
Liverpool star Sadio Mane began the tournament as the first-choice Senegal penalty taker but, after missing two, opted out before the quarter-finals.
Senegal will miss star defender Kalidou Koulibaly for the final against Algeria.
It was the second caution of the knockout phase for the Napoli centre-back and triggered an automatic one-match suspension.
Senegal last reached the title decider 17 years ago, when current coach Aliou Cisse captained a team beaten on penalties by Cameroon in Mali.
“I congratulate (Tunisia and former Senegal coach) Alain Giresse because he left me a good group. He did a good job in Senegal,” said Cisse.
“The match was incredible because of the uncertainty — it will remain in the annals of African football.”
French football legend Giresse said: “We were equal to Senegal and had opportunities, but did not know how to transform them.
“I am the number one supporter of Aliou Cisse. He will become a coach who will surpass what he achieved as a player. He will win the Cup of Nations.”
Cisse made one change to the team that defeated Benin in the quarter-finals with 20-year-old forward Krepin Diatta replacing Keita Balde.
Giresse changed two of the side that eliminated Madagascar, promoting Mohamed Drager and Ayman Ben Mohamed and benching Wajdi Kechrida and Ghaylen Chaaleli.
The countries were meeting for the sixth time in the Cup of Nations with each winning one match and the other three drawn.
Tunisia had the first clearcut chance at the 30 June Stadium in the Egyptian capital, but unmarked captain Youssef Msakni headed a corner well over.
Senegal then took control and had three opportunities before half-time to end the deadlock and edge closer to the July 19 final.
Youssouf Sabaly unleashed a curling shot from the edge of the box that beat Mouez only to cannon back into play off the woodwork.
Then, in a 60-second purple patch, Mbaye Niang and Mane were unable to convert chances before a small crowd.
Niang swivelled inside the box before firing well wide and Mane rounded the goalkeeper but his shot from an acute angle finished off target.
Giresse took off Msakni at half-time and introduced Naim Sliti, scorer of the stoppage-time goal that sealed a convincing last-eight win over giantkillers Madagascar.
Senegal goalkeeper Alfred Gomis, a virtual spectator in the opening half, reacted quickly early in the second half to push away a Sassi snap shot.
Attackers Niang and Diatta were having little success and came off with Mbaye Diagne and Ismaila Sarr replacing them as an intriguing semi-final entered the final quarter.
The Sassi penalty was weak, allowing Gomis to save comfortably, while Hassen made a brilliant one-hand block to foil a powerfully struck spot-kick by Saivet.