Klaas-Jan Huntelaar and Joel Matip gave the Champions League side a 2-0 lead by halftime but Schahin's double, including a powerful 77th minute header, took Fortuna's unbeaten run since the start of the season to six matches.
Schalke moved up to third place on 11 points with leaders Bayern Munich, who have 15 after five wins from five games, travelling to Werder Bremen on Saturday when champions Borussia Dortmund, on eight, take on Borussia Moenchengladbach.
Promoted Fortuna, still unbeaten along with Bayern and second-placed Eintracht Frankfurt, are fifth on 10 points.
Huntelaar, last season's Bundesliga top scorer, drilled in a stunning left-foot shot after slipping the ball past two defenders in the 13th minute.
Joel Matip added a second goal seven minutes later and Schalke looked to be cruising to an easy victory.
However, Schahin cut the deficit three minutes after the break, connecting with an Andriy Voronin corner.
With Fortuna seeking an equaliser, Schalke had space on the break and will be kicking themselves for not finishing off their opponents with Huntelaar and Ibrahim Afellay failing to beat keeper Fabian Giefer from point-blank range on three occasions.
The hosts' hard work finally paid off in the 77th minute when 23-year-old Schahin beat marker Kyriakos Papadopoulos to drill in a header from an accurate Tobias Levels cross.