City had not managed a shot on target until five minutes from time, when McSheffrey hammered home the spot-kick.
McSheffrey was brought down by goalkeeper Simon Royce, who was then red-carded despite protesting.
McSheffrey picked himself up and crashed his penalty high past substitute goalkeeper Jake Cole.
Coventry boss Micky Adams:
"Whether or not we deserved that is debatable but we'll take it. I'm not sure either side deserved to get all three points.
"My keeper certainly wasn't troubled and Royce wasn't either. We stood firm and got a bit of luck at the end.
"We didn't come to be defensive. QPR forced us backwards without creating too much. Then we had a lucky break."
QPR: Royce, Bignot, Evatt, Shittu, Dyer, Ainsworth (Cole 86), Langley, Bean (Cook 66), Rowlands, Santos (Bircham 81), Moore.
Subs Not Used: Milanese, Rose.
Sent Off: Royce (85).
Booked: Rowlands, Santos.
Coventry: Fulop, Whing, Page, Shaw, Duffy, Morrell (Impey 61), Doyle, Osbourne, McSheffrey (Jorgensen 89), Adebola (Scowcroft 76), Hutchison.
Subs Not Used: Ince, Thornton.
Booked: McSheffrey, Adebola.
Goals: McSheffrey 87 pen.
Att: 13,556
Ref: U Rennie (S Yorkshire).