Billy Sharp header from close-range earns Blades late victory.Gwion Edwards fired over from the edge of the box after a patient Posh build-up on four minutes as the game settled down after a frenetic start.
Fleck fired over from long-range at the other end after a sustained spell of pressure from the visitors.
Maddison whistled a free-kick just wide of the target on 27 minutes after Grant was pushed as Posh came close to the breakthrough.
McGee made a fine save to deny former Bradford City front man Hanson on 37 minutes with the striker then firing wide of the near post with the rebound.
Nichols was cautioned for a late tackle on Freeman on 39 minutes. Duffy fired wide of the upright on 40 minutes as the visitors enjoyed a good spell of pressure.
Carruthers was cautioned for a foul on Edwards moments later. Two minutes of injury time was signalled by the fourth official, but nothing occured during those minutes.
McGee made a fine stop from point blank range to deny Hanson with Sharp firing the rebound over the top three minutes after the re-start.
A deflected effort from Fleck was well gathered by McGee after Maddison had the fans off their seat at the other end with a forceful run from deep.
Grant McCann made a double change just after the hour mark with Junior Morias and Chris Forrester replacing Nichols and Edwards.
Moore produced a fine stop to deny Maddison at full stretch on 71 minutes after the winger let fly out of absolutely nowhere. Mackail-Smith diverted a Morias cross-shot just past the post on 74 minutes.
Hanson glanced a header wide of the target on 82 minutes after a deep centre by Lavery. The visitors got the goal on 86 minutes as a cross into the box was nodded across by Hanson and SHARP was there to head home from close-range.
Five minutes of added time was signalled by the fourth official, but Posh couldn't find a leveller.
Posh: McGee, Smith, Tafazolli, Edwards (sub Forrester 60min), Maddison, Ball, Mackail-Smith, Inman (sub Samuelsen 87min), Nichols (sub Morias 60min), Binnom-Williams, Grant. Unused subs: Tyler, Hughes, Baldwin, Angol.
Sheffield United: Moore, Fleck, O'Connell, Basham, Sharp, Wright, Hanson, Freeman, Duffy (sub O'Shea 60min) Lafferty (sub Lavery 78min), Carruthers (sub Riley 87min). Unused subs: Long, McNulty, Done, Wilson.
Half-time: Peterborough United 0-0 Sheffield United
Full-time: Peterborough United 0-1 Sheffield United
Attendance: 10,258 (3,930 Sheffield United fans)