Defender Richard Wood gave the hosts the lead against the run of play before McNulty kept his cool from the spot to convert his 12th goal of the season.
Blades goalkeeper Iain Turner came to United's rescue early on when tipping a goalbound 25-yard drive from Mathias Pogba over the crossbar.
Visiting defender Chris Basham had the ball in the net in the 16th minute when he turned in a cross from Jamie Murphy but was deemed to be in an off-side position.
Blades skipper Michael Doyle then wasted a glorious opportunity to put United ahead eight minutes before the break when he blazed over from eight yards after Crawley goalkeeper Lewis Price had parried an effort from Murphy.
United continued to press after the interval and defender John Brayford had a low shot parried before substitute Kieran Freeman fired an angled shot over.
Blades defender Bob Harris was only just off target with a left-footed shot which flew inches wide of Price's left-hand post, but Wood, on loan from Rotherham and making his home debut, put Crawley ahead in the 63rd minute by heading home Anthony Wordsworth's free-kick at the near post.
But Blades substitute McNulty made it 1-1 after 81 minutes from the penalty spot, sending Price the wrong way after Crawley skipper Ryan Dickson had brought down Matty Done.