The visitors enjoyed the majority of the possession throughout the match, but clean chances were few and far between for both sides and ultimately it was an unfortunate own goal from Sebastian Coates which proved to be the difference.
It was an ugly win by the usual standards of Ernesto Valverde's side, who withstood some second-half pressure from the hosts to pick up their eighth consecutive victory across all competitions.
Barcelona went into the match having averaged more than three goals per game during their seven-match winning streak, but they found it difficult to break down their hosts throughout the first half in Lisbon.
Luis Suarez had the first shooting opportunity in the 16th minute when he fired a first-time effort over from 25 yards, but Sporting hit straight back with a long-range strike of their own as Cristiano Piccini let fly with a rising drive from the right flank.
Lionel Messi, who inspired Barca to a 3-0 win over Juventus on matchday one, had his first sight of goal shortly afterwards only to scuff his finish from outside the box into the grateful arms of Rui Patricio as Barca's previously free-scoring attack continued to struggle.
The visitors' best chance of the first half fell the way of Suarez, but his low strike was saved by Patricio, who made a more routine stop seconds later to deny a header from Messi.
The hosts were primarily focused on keeping things tight at the back, though, and they proved it again in the closing stages of the first half when Messi was denied from a good shooting position by a last-ditch Fabio Coentrao block.
It took an own goal to break the deadlock during Barcelona's weekend win over Girona, and the Spanish giants benefitted from another within four minutes of the first half as the breakthrough finally arrived in fortuitous fashion.
Messi's free kick into the box caused the problems as Suarez got his head to the ball, but the final touch came off Coates as the former Liverpool man was left to helplessly watch it trickle over the line.
Messi was in search of his 100th European goal, but he found himself thwarted by his former teammate Jeremy Mathieu shortly before the hour mark when Sporting's summer arrival from Barcelona produced a saving challenge just as Messi was going to pull the trigger.
Suarez was the next to threaten when his snap shot from the edge of the box was gathered by Patricio, but a second goal continued to be elusive for the visitors and Sporting began to threaten at the other end during the final 20 minutes.
The hosts' biggest chance of the evening arrived during that period when Bas Dost laid the ball into the path of Fernandes, who saw his powerful piledriver kept out by Ter Stegen when he should have done better.
Barcelona soon regained an element of control over the game, though, and they could have finally put it to bed with four minutes remaining when a Coates error allowed Ivan Rakitic to play the ball through to Paulinho, who was denied by a good stop from Patricio.
Sporting were unable to produce an equaliser which would have given them a hard-earned point as they fell to their first defeat of the season, although they remain second in Group D ahead of Juventus - who they face in their next two European matches - on goal difference.
Barcelona, meanwhile, are now on their best run of form since March 2016 heading into Sunday's La Liga clash with Las Palmas and sit three points clear of their nearest rivals in the group.