Swansea City were denied their first Championship victory of the season as Lyndon Dykes' stoppage-time header cancelled out Josh Ginnelly’s early goal against Queens Park Rangers at Loftus Road.
Ginnelly had been credited with the opener after a punch from Asmir Begovic cannoned off him and into the net in just the seventh minute.
Jamal Lowe and Jerry Yates had chances to extend Swansea’s lead, but the visitors looked to be on course for the three points and a clean sheet until Dykes' steered a header beyond the grasp of Carl Rushworth in the Swansea goal in the dying moments.
The Swans had shown five changes with Bashir Humphreys coming in for his debut, while Ben Cabango, Ginnelly, Jamie Paterson and Liam Cullen also came into the side.
There was also a shift in formation as the Swans lined up in a 4-2-3-1 shape, and they made an encouraging start.
Ginnelly threatened in behind and was nearly picked out by a Matt Grimes pass, with Osman Kakay relieved to see referee Andrew Kitchen find in his favour when both players tumbled inside the area.
Paterson was then off target from 12 yards after well-worked build-up had created space for Josh Key to deliver from the right.
And it would be another delivery from the right that would give the Swans the lead.
Cullen ran the channel and sent the ball infield to Jamal Lowe, the winger was able to turn and send in a cross that Begovic chose to punch, only to see the ball cannon off Ginnelly and roll into the empty net.
Swansea built on the goal with a good spell of possession as they moved the ball around, with Ginnelly again beating his man only to see his final cross blocked.
At the other end Nathan Wood made a tremendous headed clearance, while Cabango did very well to clear away a Paul Smyth cross when running back into his own six-yard box.
Sinclair Armstrong then wasted the home side’s best opportunity of the opening half, the striker lazily firing the ball over the bar believing he was offside, only to turn and see the flag had remained down.
Swansea went up the other end and nearly doubled their lead. Lowe forcing Begovic into a good save after linking well with Paterson and Cullen.
But there was a blow for the visitors when Key was forced off by injury, with Josh Tymon his replacement.
Wood made another excellent defensive header during the final stages of the half as the visitors retained their advantage at the break.
Cullen saw a shot blocked early in the second half before Smyth got in behind the Swansea defence and powered a header at goal that Rushworth did brilliantly to save.
The offside flag belatedly went up, but it remained a magnificent stop.
Ilias Chair then headed a cross from the right over the bar before the Swans lost a second player to injury as Jerry Yates replaced Cullen.
Cabango then made a superb last-ditch intervention as Chair looked to send substitute Dykes in on goal with a slide-rule pass.
Rushworth made an excellent claim from Kakay’s cross, taking a blow to the ribs for his trouble but the keeper was okay to continue.
Into the final 20 minutes and still the Swans led but QPR were beginning to commit more and more bodies forward as they searched for an equaliser.
Swansea wasted a good chance to double their lead on the break as Cooper sent Mykola Kuharevich into space on the left, but the striker’s final ball was behind the supporting Paterson, and Yates’ final effort was straight at Begovic.
Rushworth made a comfortable save from substitute Rayan Kolli's header while Chair sent a deflected effort wide of the target as the game moved into six minutes of stoppage time.
But the Swans were denied the win when Dykes arrived late to steer an unerring header into the net, with the visitors' then seeing Cooper sent off after picking up two bookings in quick succession.
Queens Park Rangers: Asmir Begovic (captain), Osman Kakay, Steve Cook, Chris Willock (Charlie Kelman 73), Sam Field, Ilias Chair, Paul Smyth (Rayan Kolli 87), Morgan Fox, Andre Dozzell, Kenneth Paal, Sinclair Armstrong (Lyndon Dykes 61)
Unused Substitutes: Joe Walsh, Jake Clarke-Salter, Elijah Dixon-Bonner, Ziyad Larkeche, Stephen Duke-McKenna, Albert Adomah.
Swansea City: Carl Rushworth, Josh Key (Josh Tymon 33), Jay Fulton, Ben Cabango, Matt Grimes (captain), Jamal Lowe (Mykola Kuharevich 73), Josh Ginnelly (Ollie Cooper 73), Jamie Paterson, Liam Cullen (Jerry Yates 58), Nathan Wood, Bashir Humphreys.
Unused Substitutes: Andy Fisher, Kristian Pedersen, Harry Darling, Charlie Patino, Harrison Ashby.
Referee: Andrew Kitchen
Attendance: 13,367 (740 away)