Reading blew away fellow promotion candidates Bournemouth as they scored three goals in a stunning first-half display.
Josh Laurent and Tom McIntyre were both well placed to score on the rebound, before Lucas Joao scored his 15th Championship goal of the season in a perfect first-half performance.
Junior Stanislas clawed a late goal back for the visitors with a free-kick, but Reading held out to claim a vitally important win.
The Royals kept any hope of a Bournemouth comeback this time around at bay as they climbed up to third in the Championship table and moved five points clear of the Cherries.
Veljko Paunović had the boost of being able to welcome Andy Yiadom and Yakou Meite back to the squad after they both returned from injury to bolster the Royals bench.
Michael Olise returned to the starting eleven in place of Sone Aluko, after the French midfielder was left on the bench during Reading’s 0-0 draw at Preston North End.
Meanwhile, Bournemouth named a strong squad, with several experienced Premier League players who featured for the Cherries and are trying to help them to promotion after their relegation from the top-flight.
Reading tried to play over the top of the Bournemouth defence early on as Tom McIntyre searched for Lucas Joao with a long ball, and it looked as if he may have found him when Chris Mepham missed his header, but the weight on the ball was slightly too strong as it ran through to goalkeeper Asmir Begovic.

Arnaut Danjuma looked to hurt the Royals defence as he did in the reverse fixture. He found his way into the box after a return pass from Philip Billing, but Andy Rinomhota got across in the middle to make a vital interception from the resulting cross.
Reading left Danjuma with far too much space on the edge of the box just moments after his dangerous run and he hit a fierce effort towards goal which Rafael Cabral palmed away after he sprung low to his left.
The Royals began to take control of the contest and looked as if they would score an opener when Joao charged down a short backpass from Lewis Cook, and he faked to shoot before he laid the ball off for John Swift in the middle, but he dragged a shot wide of the far post to miss the best chance of the match so far.
A spell of pressure followed as Reading won two corners in quick succession and they capitalised to find the breakthrough after 24 minutes.

McIntyre hit a shot goalwards which was blocked, but Josh Laurent followed up on the rebound and slammed the ball into the roof of the net to give Reading the lead.
With the confidence of scoring the first goal, Paunovic’s side looked to further damage the Cherries when the tireless running of Rinomhota was stopped when he was cynically taken down by Diego Rico on the edge of the box, who received a yellow card.
Michael Olise lined up the free-kick and aimed at the goalkeeper’s side, and despite keeping the ball out, Begovic could only palm it in front of him where it found McIntyre who pounced on the loose ball and fired into the back of the net to double the advantage.

Reading’s dream half got even better when they added a third before the break with the pick of the goals.
Ovie Ejaria and Swift shifted the ball forward with a slick move and Ejaria slid the ball through to Joao who fooled Steve Cook with a ball roll before he sent the ball past Begovic into the corner.
Paunović knew his side would have to guard against complacency after they surrendered a two-goal lead in their last match against Bournemouth.

Meanwhile, Cherries boss Jason Tindall responded to a disastrous half for his team as he made three changes at the break as Jack Wilshere, Adam Smith and David Brooks replaced Jefferson Lerma, Rico and Danjuma.
Two of Bournemouth’s substitutes, Brooks and Smith almost combined when Smith headed over the bar from a corner just a minute into the second-half.

Michael Morrison put in two committed tackles on the right to win possession before going on a surging run down the right-wing. Reading kept possession to work an attack and Swift lifted the ball just over the bar after Ejaria’s cut back.
Bournemouth worked their best chance of the game and looked certain to score when the ball dropped to Mepham in the box, but Tom Holmes put his body on the line to make a crucial block before Josh King smashed the ball over the bar on the rebound.
The Cherries began to turn the heat up as they looked for a way back into the game and Rafael had to make a two smart reaction saves. First he turned the ball behind from Billing’s shot from just eight yards out, before he made another save from Solanke’s header to maintain the clean sheet.

Paunović made his first change in the 71st minute as Alfa Semedo replaced Swift.
Semedo’s first contribution was to play in Joao, who tried to find Semedo with a return pass, but the ball fell back to the Portuguese striker who forced a save from Begovic.
Wilshere was brought down by Laurent and they took advantage and grabbed a goal back in the 85th minute as Junior Stanislas found the corner as he placed a 20-yard free-kick past Rafael to give his side a glimmer of hope.
Tomas Esteves, Meite and Yiadom came on for Olise, Holmes and Joao to shore up the game late on.
Esteves had a chance on the counter to finish the match with a fourth and relieve the pressure of six minutes of added time as he sprung forward from a quick free-kick but hit his shot high and wide.

Reading showcased a disciplined display in the second-half to nullify the threat from the visitors as they picked up three vital points in their push for promotion and extended their unbeaten run to six matches.
The Royals travel away to face Stoke City next weekend before a midweek home game against Brentford.
Reading: Rafael, Holmes, McIntyre, Morrison (c), Richards, Rinomhota, Laurent, Swift, Ejaria, Olise, Joao.
Subs: Southwood, Esteves, Yiadom, Gibson, Semedo, Tetek, Onen, Aluko, Meite
Bournemouth: Begovic, S Cook (c), Mepham, Lerma, Solanke, Danjuma, L Cook, Stacey, Rico, King, Billing
Subs: Dennis, Smith, Simpson, Carter-Vickers, Wilshere, Stanislas, Brooks, Riquelme, Surridge
Goals: Laurent 24′, McIntyre 31′, Lucas Joao 43′, Stanislas 85′