Paul Mukairu saved Reading on the road as they picked up a point thanks to his first half stoppage time goal.
After going two-nil down in the first 40 minutes, the Royals had to respond and did so in quick succession as Jeriel Dorsett flicked home minutes before Mukairu netted the equaliser after connecting with a Lewis Wing cross.
The winner sent the away end into pandemonium with the shock at what the fans were just witnessing.
The final scoreline of two-two sees the Royals pick up another point on the road as they go five games unbeaten.
Ruben Selles opted to make just one change after the draw away at Peterborough with goalscorer Sam Smith earning his spot, replacing Kelvin Ehibhatiomhan.
There was still no Andy Yiadom in the squad, missing out again due to injury despite Selles saying that he had a 50/50 chance of playing on Boxing Day.
The game started frantically with both sides going end to end with Femi Azeez getting Reading’s first chance as he fired just over from outside the box.
It was Cheltenham who went on to dominate for large portions of the half with David Button saving Reading on multiple occasions. Most notably when his outstretched glove denied a chip attempt from Rob Street to keep the score level.
The hosts however, were the first to score with Liam Sercombe connecting with Sean Long’s low cross as he flicked the ball into the bottom corner to give them the lead in the 29th minute.
After another period of dominance, Cheltenham added another in an unusual fashion. Amadou Mbengue attempted to clear the ball from the box but in doing so fired it straight into Button, seeing the ball end up in their own net.
Just as the half drew to a close Reading started to look dangerous and managed to claim one back thanks to Jeriel Dorsett who flicked it in at the back post from a corner.
As the fourth official announced three added minutes, the Royals were on the hunt for an equaliser and found it thanks to a great low ball by Wing, which saw Paul Mukairu tap it into the bottom corner to bring an end to a chaotic first half.
There were no substitutions at half time but Reading looked like a changed side for several minutes as they came out looking more settled and retained the ball for spells.
However after a while, the chaos returned and the ball pinged from end to end with neither side looking to keep the ball.
Selles decided to make Reading’s first change in the 62nd minute as Tyler Bindon replaced Mbengue at right back. Minutes after coming on he made his presence known with some impressive plays down the right flank.
Lewis Wing found himself over a freekick just outside the box alongside Azeez. Wing’s shot forced Southwood into a good save as he pushed it out for a corner.
Reading then dipped to the bench yet again as Ben Elliott replaced goalscorer Paul Mukairu.
The Royals went on the hunt for a winner yet again as Knibbs touched down the ball in the middle of the box, before turning and firing it at Southwood who did well to keep the shot out of his net.
As the game entered the final stages, Selles rolled the dice one more time as he chose Charlie Savage to be his final substitute as he replaced Michael Craig in the middle of the park.
The fourth official indicated five additional minutes as both sides battled on to try and grab the three points, with Cheltenham having the last few chances. Butler-Oyedji had the best chance as his curling shot just bended wide past Button’s far post.
Reading are now unbeaten in five games over the festive period and will face fellow relegation candidates Exeter at home on New Years Day.