No shortage of drama in this one, but neither goalkeeper had to make a visit to the net. A strong display by the Royals, full of positive attacking intent, only yielded a share of the spoils as QPR held on for a 0-0 draw.
It was a game which saw Reading cut open the opposition on several occasions, but unable to supply the cutting edge, the last game of 2018 ended goalless in the c
Centre-half duo John O’Shea and Tiago Ilori started as the centre-half pairing, with Liam Moore missing out through injury.
Tyler Blackett and Leandro Bacuna are both unavailable for the matchday squad as they begin their three-match suspensions, while Josh Sims, Liam Kelly and Jón Daði Böðvarsson all returned to the squad as subs.
The travelling Reading support were in fine voice in the opening stages, and they had due cause to be as their side were controlling possession around the opposition box and probing for the opener. A smart ball into the channel by John Swift found Omar Richards overlapping, but he couldn't create a clear-cut chance from the byline.
Captain McCleary then had an opportunity to get Reading ahead - Swift's cross-field free-kick was nodded into his path by Andy Yiadom, but he unselfishly looked to tee up Yakou Meite when shooting was an option. A telling block arrived, just in time.
More incisive play from Reading went unrewarded as Swift's chip into McCleary was cushioned into Mo Barrow's path, and his cut-back was scrambled away as Meite tried to prod home inside a congested six-yard box.
The home support was growing restless as the Royals continued to look the likelier with all of the ball and plenty of positive play. McCleary's deep cross was cut out just before Yiadom could supply a finish at the back post, and Barrow couldn't quite pick out Meite with a low cross as he sprung a break.
Rangers' first meaningful chance came after the half-hour mark, as Jake Bidwell's deep cross was headed back across goal by Nahki Wells, but goalkeeper Anssi Jaakkola sprung high to gather.
From a central area, McCleary was trying to open things up and some clever footwork allowed him to get outside his marker. A cut-back found Meite in the middle, but with back to goal, he could only shoot wide as he swiveled.
Then Swift was twice denied. McCleary's through-ball, meant for Meite, was cut out but sat up for the onrushing midfielder. His first effort was blocked, and his stretching effort on the rebound looped over.
QPR skipper Toni Leistner, who was the match-winner when the teams won at Madejski Stadium earlier in the year, was the crossbar's width away from grabbing an opener against the run of play. Rangers were given a questionable corner, which was only half cleared, and the centre-half's strike bounced away off the woodwork.
Meite's poor luck in front of goal continued when he met a corner from the right with a header, only to be denied low by goalkeeper Joe Lumley.
At half-time, a dominant display by Reading wasn't reflected on the scoresheet as both teams went in goalless.
Half-time: Queens Park Rangers 0-0 Reading
The second period got underway belatedly - some taps on the watch by the referee signalling some annoyance at the Queens Park Rangers players for their tardy reappearance from the tunnel - and the Royals continued in much the same vein.
When Sone Aluko drew a foul from Jordan Cousins, which had resulted in the first booking of the game, John Swift skimmed the bar with a dipping free-kick from 25 yards out.
Full-back Richards was denied a first goal of the campaign when he joined in with the attack; a clever return ball from McCleary released the 20-year-old but Lumley had his angles covered as Richards slammed an effort goalwards.
As the game wore on, Reading were nearly made to pay when a misplaced header by Ilori almost allowed QPR striker Wells a free strike, but Jaakkola came off his line instantly to close down the angles and forcing him to shoot early.
Midway through the second half, Jaakkola again had to be alert as Pawel Wszolek escaped unnoticed through the middle as Ebere Eze threaded into a gap, but the big Finn was decisive and brave to get there first.
Despite controlling much of the play, chances were beginning to dry up somewhat for Reading and the hosts came close to getting their noses in front in spectacular fashion, as Luke Freeman cracked a first-time volley from 25 yards which Jaakkola had to stretch every sinew to save.
When the goalkeeper was beaten, the crossbar came to Reading's rescue. Leistner again was the unlucky party for Rangers as a first-time strike sprung down off the turf and up onto the frame of goal. The home side suddenly looked likelier.
Böðvarsson and Danny Loader were thrown into the action for the final 10 minutes, adding fresh energy to the attack. Sims joined them soon after.
Reading wrestled back the initiative and the fourth official's board, signalling four added minutes, was met with a roar from the travelling support.
The Royals countered as the game entered the 94th minute, and Barrow's ball to Loader on the edge of the area saw the Academy graduate draw a flying stop from Lumley to keep parity.
It was the last action of the match as the game ended goalless. A decent point on the road with plenty of positive play to be proud of.
Full-time: Queens Park Rangers 0-0 Reading
Queens Park Rangers: Lumley, Furlong, Bidwell, Freeman, Cousins, Eze (Chair 90), Scowen (Smith 90+3), Wszolek, Wells, Lynch, Leistner (c).
Unused subs: Ingram, Hall, Oteh, Osayi-Samuel, Kakay.
Yellow: Cousins, Scowen, Furlong.
Reading: Jaakkola, Yiadom, O’Shea, Ilori, Richards, Rinomhota, Swift, Aluko (Loader 81), McCleary (c) (Sims 90), Barrow, Meite (Böðvarsson 81).
Unused subs: Mannone, Meyler, Kelly, Osho.
Yellow: Swift, O'Shea.
Referee: Mr Robert Jones
Attendance: 15,721 (1,619 away)