Having suffered a 3-2 home defeat last time out against Maritimo, the Dragons travelled to Sporting with the aim of getting back to winning ways.
They were on course to take an opening minute lead, but goalkeeper Antonio Adan was alert to make a brave save.
A few minutes later, the hosts had their first chance at goal following a beautiful interchange between Joao Palhinha and Jovane Cabral, nevertheless, Matheus Nunes could not finish off from close range.
Lisbon took the lead in the ninth minute through Nuno Santos, who rifled home an uncleared cross from Pedro Porro.
However, Mateus Uribe levelled matters for the visitors in the 25th minute with Nigeria international Zaidu Sanusi providing the assist.
Porto took the lead for the first time in the encounter through Jesus Corona in the 45th minute.
Just before the half-time whistle, Sanusi brought down Pedro Goncalves - an action that saw referee Luis Godinho award a penalty kick while showing the left-back a second caution.
Nevertheless, the decision was reversed after VAR replays with manager Ruben Amorim getting his marching orders instead.
Sporting pushed for an equaliser in the second half and after several attempts, they finally levelled matters in the 87th minute thanks to Luciano Vietto’s header that sailed into goalkeeper Agustin Marchesin’s net.
Sanusi was on parade from start to finish for the Dragons alongside Congo DR’s Chancel Mbemba, but Moussa Marega - who was handed a place in the starting line-up - was substituted for Antonio Martinez in the 59th minute.
Guinea Bissau’s Nanu was a 76th substitute for Wilson Manafa as the Senegalese duo of Mamadou Loum and Mouhamed Mbaye were not dressed for action.
For Sporting Lisbon, Morocco international Zouhair Feddal was in action for the duration while Cape Verde international Jovane Cabral played for 56 minutes before he was replaced by Vietto.
With this result, Porto are second on the log with seven points from four games. Unbeaten Sporting Lisbon boast of the same number of points to occupy the third position, albeit, having played a game less.