QPR led when Paul Furlong beat three defenders and unleashed an unstoppable drive, before Marcus Stewart got behind the Rangers defence to equalise.
But against the run of play Martin Rowlands put QPR 2-1 ahead with a fine strike after cutting in from the left.
However, Caldwell snatched a point in injury-time when he rose highest to nod home Sean Thornton's deep corner.
QPR manager Ian Holloway:
"The mistakes we are making are criminal. We've got to get back to the basics and if the players need prove of what is needed in this division, it was there in this match.
"We did a lot of talking after Monday night's 3-0 defeat at Watford and we have worked on it. But to give away a free header in the last minute is disappointing. It should have been three points.
"People thought we would be the whipping boys of this division after the Watford defeat but I think we have proved otherwise."
Sunderland: Myhre, Arca, Breen, Stephen Caldwell, Wright,
Oster (Lynch 73), Whitley, Robinson, Lawrence (Thornton 84),
Kyle, Stewart (Elliott 73).
Subs Not Used: Whitehead, Alnwick.
Goals: Stewart 33, Stephen Caldwell 90.
QPR: Day, Padula, Gnohere, Bean, Bignot (Forbes 85),
Ainsworth (Cook 79), Johnson (Santos 86), Rose, Rowlands,
Subs Not Used: Cureton, McLeod.
Goals: Furlong 12, Rowlands 71.
Ref: M Pike (Cumbria).