Substitute Sergio Aguero scored a 73rd-minute winner to help the defending champions return to winning ways at Bramall Lane. City squandered the chance to go in front earlier when Blades goalkeeper Dean Henderson denied Gabriel Jesus from the penalty spot in the first half.
Aguero's goal eventually wrapped up an excellent night for the Citizens, who welcomed centre-back Aymeric Laporte back into the starting XI for the first time since August.
However, Liverpool, who have two games in hand, can restore their 16-point cushion with a win away to Wolverhampton Wanderers on Thursday.
The hosts made it a typically intense affair physically, snapping into challenges, pressing high and scrapping for every loose ball. It was also typical that most of the true quality came from City, with the visitors fashioning two excellent chances early on.
First, Raheem Sterling was denied after a neat one-two with Riyad Mahrez. Then Nicolas Otamendi's acrobatic attempt amid the melee from a corner drew another fine stop from Henderson soon after.
The on-loan Manchester United stopper continued to look unbeatable when Jesus stepped forward from 12 yards after Mahrez had drawn a rash challenge from Chris Basham. It was a nifty save, but there was some question about the 22-year-old's positioning:
There was also a question about the sense of having Jesus take the penalty, considering the Brazilian's mediocre record from the spot:
5 - Gabriel Jesus has failed to score three of his five Premier League penalties (60%) - of all players to have taken at least five in the competition, no-one has a worse success rate than the Brazilian (level with Stewart Downing and El Hadji Diouf). Nervy. #SHUMNC https://t.co/r0R5Vr1HtT
City upped the pace of play after the break, with Kevin De Bruyne becoming more involved in possession. The Belgian's range of passing helped find holes in the home side's well-drilled defence, but City continued to lack the necessary finishing touch.
Recognising the need for more cutting edge, Pep Guardiola called Sergio Aguero off the bench to replace the disappointing Jesus in the 67th minute. Yet it was the Blades who went closest to breaking the deadlock when Oli McBurnie narrowly failed to make contact on the stretch with a low cross fizzed across the face of goal.
It proved a pivotal moment, with Aguero tapping in from De Bruyne's pinpoint pass at the other end. The Argentinian has made a prolific start to the calendar year and is on a run few teams in England's top flight are matching:
Blades' boss Chris Wilder responded to the goal by bringing on forward Callum Robinson and box-to-box midfielder John Lundstram. Meanwhile, Laporte made way for Eric Garcia after naturally feeling some wear and tear following such a lengthy layoff.
City stayed on the front foot, though, and Sterling should have put the away side out of sight after some fine work in the box, but the winger slipped his shot a whisker wide with Henderson beaten at the near post.
Ultimately, City didn't need the security of a second goal, instead holding off a committed opponent who proved difficult to beat, but didn't muster enough going forward to trouble Laporte and Co.