QPR manager Steve McClaren saluted saviour Angel Rangel as his brilliant brace secured a battling point in a 2-2 draw with Stoke at the bet365 Stadium.
The Spanish defender's first goals since January 2017 helped the Hoops share the spoils having squandered an early advantage.
Rangel gave the visitors a seventh-minute lead only for striker Saido Berahino to bundle home a 21st-minute leveller.
Wales midfielder Joe Allen put the Potters ahead with a sweet 61st-minute volley, but Rangel bagged his second with 12 minutes remaining in a thrilling finish.
McClaren, whose side have now lost just one of their last eight league matches, said: "I think he's [Rangel] been nothing short of a revelation.
"And not just on the field, what a great lad off it!
"I've got to say I don't know why he was in the box and heading the ball in because we told him to stay on the halfway line.
"But we're pleased he did get in there and then he scored the second goal which was a cracker. It was a great team goal, but as long as we score it doesn't matter who gets them.
"We've got a stipulation where we can keep him. He's got that option to stay with us, but it's up to him whether he wants to stay with us or not."
Rangel's bullet header from an Eberechi Eze cross was the perfect start for the Londoners, but Berahino latched on to home debutant Sam Clucas' header to restore parity.
When Allen popped up for only his third league goal of the season, it looked as though Gary Rowett's team might claim their first home league win since October 2.
But Rangel had other ideas and rifled into the bottom corner with a stunning shot to complete a fine day at the office.
McClaren added: "I thought we were excellent. I thought this was a difficult place for us to come and a difficult game for us.
"Stoke have quality, the players and from the [substitute's] bench. But what pleased me most was the way we controlled the game. We started ever so well, played football and went a goal up.
"However, against the run of player we conceded which rocked us a bit.
"In the second half we regained our composure and the courage to play and dominated, but we went a goal down against the run of play.
"The response from the team was tremendous. We never stopped."
Rowett was "very disappointed" his side couldn't hold on for full points, especially having fought back so bravely.
He said: "At the moment we're all aware we haven't won enough home games, so to not get the three points was disappointing.
"We went a goal down early on and Rangel shouldn't be allowed to run into an area unopposed. We've got to track the runner and do a lot better. That was a really poor start.
"We started poorly at home again and that just adds to the nervousness nature of things.
"But I thought we actually responded quite well. We ended up scoring an equaliser, which I thought was a really good goal.
"Saido showed good anticipation for the equaliser and then we had a couple of other good moments.
"Then to go 2-1 up with another good goal, we then allowed another goal having been comfortable for 15 minutes.
"We looked like we'd taken the sting out of the game, but then we conceded again.
"Again we shouldn't allow a 35-year-old right-back to run past our players and score again.
"Basically we've switched off twice. Our players quite clearly have do to their job defensively, which they didn't. We wasted a good position to be in.
"Then at the end we're chasing the game with five strikers on the pitch."
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', '42bb2d6c-7e13-4b75-8d3d-891a7c5aad59');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'McClaren full of praise for hero Rangel'});