Cardiff City kept up the pressure on the Championship's top three with a hard-working triumph at Reading.
Peter Whittingham's sublime 35-yard chip beat Reading keeper Adam Federici to give Cardiff a second-minute lead.
Reading's Jimmy Kebe had a goal ruled out for offside before captain Mark Hudson nudged in Cardiff's second from Whittingham's driven free-kick.
Kebe's close-range header gave Reading hope but fourth-placed Cardiff held on for their third successive win.
Reading manager Brian McDermott will be slightly concerned about his side's stuttering form as they have won only once in their last six games.
But playmaker Whittingham was the architect as the Bluebirds took revenge on Reading for last season's play-off semi-final defeat.
The former England Under-21 international set the tone with a stunning seventh goal of the season inside the opening two minutes before his sixth assist this term set up Hudson's clincher.
In-form Cardiff could have opened the scoring sooner when Craig Conway stung the hands of Federici with a fierce long-range drive.
But Whittingham took a different approach when Reading failed to clear as his beautiful first-time effort flew over a stranded Federici to give Cardiff the lead for an unparalleled 13th time this season.
Whittingham is one of only two surviving members of Cardiff's team from last season's play-off disappointment, such was manager Malky Mackay's rebuilding job following Dave Jones' departure.
Reading rallied and had two penalty appeals rejected by referee Darren Sheldrake before Noel Hunt's effort was deflected wide for a corner by Cardiff centre-back Ben Turner.
Hunt continued to be the hosts' biggest threat as the Irish striker had a shot saved by Cardiff keeper David Marshall and then went close with a header from Jobi McAnuff's corner.
Reading thought they had levelled 10 minutes into the second half when Kebe ghosted in at the back post to tap home McAnuff's floated cross, but the assistant referee's flag cut the celebrations short.
The Royals dominated the initial stages of the second period and Cardiff had recalled keeper Marshall to thank for remaining ahead as Jem Karacan's run and shot was pushed wide by the Scotland international.
And the visitors made Reading pay for wasting chances as Whittingham's superb free-kick found the unmarked Hudson at the near post and the centre-back guided his shot past Federici.
Kebe's late consolation from Karacan's cross was too little too late for Reading who slumped to their first home defeat since 10 September.
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +3:50
Mathieu Manset challenges Ben Turner unfairly and gives away a free kick. Free kick taken by David Marshall.90:00 +3:02
Mathieu Manset concedes a free kick for a foul on David Marshall. David Marshall takes the free kick.90:00 +2:36
Inswinging corner taken from the left by-line by Jobi McAnuff, David Marshall makes a save.90:00 +2:11
Inswinging corner taken by Joseph Mills from the right by-line, clearance by Ben Turner.90:00 +1:57
Jem Karacan crosses the ball, Don Cowie gets a block in.90:00 +1:15
Shot from a long way out by Aron Gunnarsson goes wide of the left-hand upright.90:00 +0:44
Corner taken short by Peter Whittingham.90:00 +0:25
Don Cowie takes a shot. Save by Adam Federici.90:00 +0:08
Jimmy Kebe crosses the ball, Ben Turner manages to make a clearance.89:10
Direct free kick taken by Joseph Mills.89:10 Substitution
Substitution Craig Conway leaves the field to be replaced by Anthony Gerrard.89:10
Unfair challenge on Mikele Leigertwood by Stephen McPhail results in a free kick.86:43
Free kick taken by Stephen McPhail.86:43 Substitution
Substitution Hal Robson-Kanu is brought on as a substitute for Adam Le Fondre.86:43
Unfair challenge on Craig Conway by Jem Karacan results in a free kick.84:00
Aron Gunnarsson challenges Jobi McAnuff unfairly and gives away a free kick. Jobi McAnuff restarts play with the free kick.83:35
The ball is crossed by Noel Hunt, David Marshall makes a save.80:54 Substitution
Substitution Stephen McPhail replaces Filip Kiss.80:32
The ball is sent over by Jimmy Kebe, clearance by Peter Whittingham.
Free kick crossed by Peter Whittingham, save by Adam Federici.77:49 Booking
Booking Booking for Jem Karacan for unsporting behaviour.77:41
Free kick awarded for a foul by Jem Karacan on Craig Conway.76:53
Assist by Jem Karacan.76:53 Goal scored
Goal! - Jimmy Kebe - Reading 1 - 2 Cardiff Jimmy Kebe grabs a headed goal from close in. Reading 1-2 Cardiff.75:15
The assistant referee flags for offside against Kenny Miller. Kaspars Gorkss takes the free kick.73:20 Substitution
Substitution (Reading) makes a substitution, with Mathieu Manset coming on for Shaun Cummings.72:36
Craig Conway concedes a free kick for a foul on Shaun Cummings. Adam Federici takes the direct free kick.71:02
Joseph Mills takes the inswinging corner, Mark Hudson manages to make a clearance.70:40
Jimmy Kebe crosses the ball, Mark Hudson makes a clearance.69:47
Peter Whittingham provided the assist for the goal.69:47 Goal scored
Goal! - Mark Hudson - Reading 0 - 2 Cardiff Mark Hudson finds the back of the net with a goal from inside the six-yard box to the bottom right corner of the goal. Reading 0-2 Cardiff.69:09
Unfair challenge on Craig Conway by Shaun Cummings results in a free kick. A cross is delivered by Peter Whittingham,65:06
Corner taken by Joseph Mills played to the near post, Unfair challenge on David Marshall by Kaspars Gorkss results in a free kick. David Marshall restarts play with the free kick.64:26
Joseph Mills takes the inswinging corner, clearance by Filip Kiss.64:11
Don Cowie crosses the ball, save by Adam Federici.63:50
Corner taken by Craig Conway, clearance by Kaspars Gorkss.63:34
Kenny Miller takes a shot. Blocked by Jem Karacan.62:35
Free kick awarded for an unfair challenge on Andrew Taylor by Mikele Leigertwood. Direct free kick taken by Andrew Taylor.62:13
Free kick awarded for a foul by Kenny Miller on Kaspars Gorkss. Direct free kick taken by Adam Federici.57:41
Corner taken left-footed by Joseph Mills, David Marshall makes a save.55:46
Free kick awarded for an unfair challenge on Peter Whittingham by Jimmy Kebe. David Marshall takes the free kick.55:22
Jimmy Kebe sends in a cross, clearance by Ben Turner.54:04
Joseph Mills takes a inswinging corner.53:27
Joseph Mills takes a inswinging corner from the right by-line played to the near post, Peter Whittingham manages to make a clearance.53:11
Jem Karacan takes a shot. Save by David Marshall.52:17
The ball is delivered by Andrew Taylor.51:11
Jimmy Kebe crosses the ball, Mark Hudson manages to make a clearance.50:48
Corner taken left-footed by Joseph Mills to the near post, clearance made by Filip Kiss.50:30
Jem Karacan has a drilled shot. Aron Gunnarsson gets a block in.50:15
Don Cowie sends in a cross, Kaspars Gorkss makes a clearance.49:10
The offside flag is raised against Jimmy Kebe. David Marshall takes the indirect free kick.46:01
Corner taken by Peter Whittingham from the right by-line, clearance made by Jimmy Kebe.45:49
Aron Gunnarsson takes a shot. Mikele Leigertwood gets a block in.45:01
The referee gets the second half started.45:00 +3:11 Half time
Half Time The whistle is blown to end the first half.45:00 +2:47
Inswinging corner taken by Don Cowie from the left by-line played to the near post.45:00 +2:38
Don Cowie crosses the ball, blocked by Kaspars Gorkss.45:00 +1:08
Outswinging corner taken by Jobi McAnuff from the right by-line, save by David Marshall.45:00 +0:49
Jimmy Kebe crosses the ball, Adam Le Fondre takes a shot. Blocked by Ben Turner.45:00 +0:27
Inswinging corner taken by Peter Whittingham from the right by-line played to the near post, Noel Hunt manages to make a clearance.44:23
Peter Whittingham fouled by Mikele Leigertwood, the ref awards a free kick. Shot on goal comes in from Peter Whittingham from the free kick, save by Adam Federici.43:31
Mikele Leigertwood concedes a free kick for a foul on Craig Conway. Andrew Taylor restarts play with the free kick.42:52
Craig Conway is adjudged to have handled the ball. Indirect free kick taken by Shaun Cummings.42:36
Centre by Jimmy Kebe, clearance by Ben Turner.41:32
Foul by Mark Hudson on Noel Hunt, free kick awarded. Joseph Mills takes the free kick.40:50
The ball is swung over by Joseph Mills.39:52
Don Cowie produces a cross, Mikele Leigertwood manages to make a clearance.38:44
Noel Hunt gives away a free kick for an unfair challenge on Kevin McNaughton. Direct free kick taken by Mark Hudson.38:19
The ball is swung over by Craig Conway, Headed effort from deep inside the area by Ben Turner misses to the left of the goal.36:51
Adam Le Fondre concedes a free kick for a foul on David Marshall. David Marshall restarts play with the free kick.36:07
Corner taken left-footed by Joseph Mills, save by David Marshall.34:51
Jobi McAnuff takes a shot. Mark Hudson gets a block in.34:26
Corner taken by Joseph Mills, save by David Marshall.32:57
Free kick taken by Jobi McAnuff.32:57 Booking
Booking Mark Hudson is cautioned by the ref for unsporting behaviour.32:52
Unfair challenge on Joseph Mills by Mark Hudson results in a free kick.32:01
Jobi McAnuff takes a shot. Blocked by Peter Whittingham.31:39
Craig Conway delivers the ball in from the corner, save by Adam Federici.28:48
Don Cowie concedes a free kick for a foul on Jobi McAnuff. Joseph Mills takes the direct free kick.26:40
Mark Hudson takes a shot. Save made by Adam Federici.26:07
Foul by Shaun Cummings on Craig Conway, free kick awarded. Peter Whittingham restarts play with the free kick.25:04
Adam Le Fondre is caught offside. David Marshall takes the indirect free kick.24:38
The assistant referee flags for offside against Craig Conway. Indirect free kick taken by Jobi McAnuff.23:49
Corner taken by Jobi McAnuff from the right by-line to the near post, Header from close in by Noel Hunt misses to the right of the target.23:02
Corner taken right-footed by Jobi McAnuff, Alex Pearce takes a shot. Blocked by Craig Conway.20:53
The referee blows for offside against Jimmy Kebe. David Marshall takes the indirect free kick.19:19
Corner taken left-footed by Joseph Mills from the right by-line to the near post, clearance made by Peter Whittingham.19:12
The ball is sent over by Jobi McAnuff, clearance by Andrew Taylor.18:39
Noel Hunt takes a shot. David Marshall makes a save.16:11
The ball is swung over by Noel Hunt.15:27
A cross is delivered by Aron Gunnarsson, Kaspars Gorkss makes a clearance.14:14
Centre by Adam Le Fondre, clearance by Kevin McNaughton.12:05
Corner from right by-line taken by Joseph Mills.11:48
Noel Hunt takes a shot. Blocked by Ben Turner.10:43
The ball is crossed by Jimmy Kebe, clearance by Ben Turner.8:54
Foul by Aron Gunnarsson on Joseph Mills, free kick awarded. Jobi McAnuff restarts play with the free kick.8:42
Jobi McAnuff takes a shot. Kevin McNaughton gets a block in.8:33
The ball is sent over by Jimmy Kebe.7:27
Jobi McAnuff has a direct shot on goal from the free kick.7:27 Booking
Booking Peter Whittingham is cautioned.7:13
Peter Whittingham concedes a free kick for a foul on Jimmy Kebe.5:16
Inswinging corner taken by Jobi McAnuff from the left by-line.4:41
Joseph Mills takes the inswinging corner, save by David Marshall.4:32
Joseph Mills crosses the ball.2:57
Free kick awarded for a foul by Jimmy Kebe on Andrew Taylor. Direct free kick taken by Andrew Taylor.1:58 Goal scored
Goal! - Peter Whittingham - Reading 0 - 1 Cardiff Goal scored by Peter Whittingham from just outside the penalty area to the top right corner of the goal. Reading 0-1 Cardiff.1:34
Craig Conway takes a shot. Save by Adam Federici.0:00
The referee gets the game started.
Live data and text provided by our data suppliers