Reading led and fought to the very last second of injury time, but couldn't convert it into the three points they needed this afternoon
Nothing more than victory would do for the Royals, but a first half lead was turned around by a Swansea side who confirmed their place in the play-offs with a draw that will deny Reading a top six finish.
With the game less than two minutes old, Swansea came close to opening the scoring. A free kick was taken short and Jamal Lowe delivered a tasty cross to the back post where Ben Cabango arrived late but couldn't direct his header inside the upright.
It took some good defending from Moore to deflect a Wayne Routledge effort over the crossbar moments later as the Swans started the game strongly.
At the other end, Swift nearly unlocked the visitors' defence with a threaded pass thatjust had too much power on it for Joao to control inside the City box.
Yellow cards were shown to Marc Guehi and then Tom Holmes soon after, the latter bringing down the lively Cullen to concede a free kick.
A powerful run from Andy Yiadom saw him collect a one-two from Meite and then chip a cross towards Joao at the back post - but Freddie Woodman was off his line to pluck it out of the air and keep the game goalless.
But with half an hour played, he could do nothing to prevent Meite breaking the deadlock. A delightful inswinging cross from John Swift found the head of Meite who directed a downward header perfectly inside the bottom left corrner for 1-0.
It could have been 2-0 before half-time when a loose pass back to the keeper was intercepted by Joao and he forced a very good save from the Swans stopper, diving low to his left to push the ball wide.
Reading were pressing hard for a second and Meite appealed for a penalty when he cut inside from the left and took a tumble - but nothing was given.
Then Rinomhota's drive was deflected behind for a corner which Swift swung into the box - Moore connected but a Swansea boot hacked the captain's downward header away from danger as it headed goalwards.
The whistle for the interval came at the wrong time for the Royals who we enjoying a very good spell, but they led 1-0 at half-time.
Half-time: Reading 1-0 Swansea City
Swansea came close to levelling early in the second half - a deflected cross from the left sailed kindly onto the lad of Cullen, but he placed his header just wide of the right post from a central position.
Swift's creativity came to the fore once more when he took a free kick, just inside the Swansea half, and clipped a clever ball into the run of Meite across goal. Yakou looked to stab the ball goalwards at first time of asking but didn't get enough on it and a difficult chance went begging.
Fulton nearly created an opportunity from nothing, robbing Laurent of possession on the D of his own box, but Rafael was sharp to respond, racing off his line to gather it in before Fulton could truly take advantage.
Moore had to hurriedly clear a cross-shot from Guehi when a recycled corner found the defender in space to the left of goal.
A triple substitution from the visitors worked. Andre Ayew's first input in the game was to cleverly flick the ball into the path of Fulton who drove into the Reading box. He drilled a shot at goal, Rafael saved well low to his left, but Lowe was on hand to turn it home from close range.
Reading looked to respond immediately and a good pass from substitute Olise found Ejaria - who was dragged down 22 yards from goal. Olise lined up the set piece but the wall did its job and deflected his left-footed effort behind for a corner.
From the resultant corner, Ejaria delivered a deep cross from the left and Joao appealed for a penalty as he seemed to be bundled over at the back post. Nothing came.
Reading pushed and pressed, pressed and pushed for a goal they now needed. But as they did, gaps appeared at the back and Lowe nearly toed the ball past Rafael for a Swansea second. The ball bobbled wide of the right post though.
But Swansea clinched victory when Bidwell got away down the left and cut the ball back for Ayew to smash home from close range.
Reading were desperate now and more changes were made in an attempt to throw the kitchen sink at the final stages, but Swansea were in control and as Olise's hooked effort sailed harmlessly over the crossbar with two minutes remaining, it looked beyond the hosts to find a dramatic response.
Lowe nearly rubbed salt into the wounds when he rifled an effort past Rafael and flush against the left post. instead though, an injury time drive from Esteves levelled matters to set up one last push.
But shortly after, the final whistle sounded and faint hopes of a top six finish had finally been dashed.
Full-time: Reading 2-2 Swansea City
Reading: Rafael, Richards (Aluko 87), Yiadom (Esteves 82), Moore (c), Holmes, Laurent, Rinomhota, Ejaria (Puscas 82), Swift (Olise 65), Meite (Semedo 65), Joao.
Unused subs: Southwood, Baldock, Gibson, Tetek.
Yellow: Holmes
Goals: Meite 31, Esteves 90
Swansea City: Woodman, Guehi, Fulton, Grimes (c), Lowe, Hourihane (Smith 86), Routledge (Whittaker 64), Cullen (Ayew 64), Bidwell, Naughton (Roberts 64), Cabango.
Unused subs: Hamer, Bennett, Dhanda, Latibeaudiere, Roberts, Cooper.
Yellow: Guehi
Goals: Lowe 67, Ayew 83