Despite having Nascimento Mauricio sent off, the Portuguese side fought back to level from 3-1 down, only to concede a stoppage-time penalty when Jonathan Silva was wrongly pulled up for handball.
Klaas-Jan Huntelaar's header hit Silva in the face, but referee Sergei Karasev pointed to the spot and Maxim Choupo-Moting duly converted to claim a UEFA Champions League Group G victory for Schalke.
"What happened is not normal, it is a terrible injustice," said Silva. "Nor do I feel like saying anything about it."
After Nani opened the scoring for Sporting, Schalke took control through goals from Chinedu Obasi, Huntelaar and Benedikt Howedes.
The visitors rallied thanks to an Adrien Silva double, the first coming from the penalty spot, but they were left with nothing to show for their efforts after the late drama.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.