Leroy Lita's winner against Crystal Palace extended Sheffield Wednesday's unbeaten run to seven league matches and eased their relegations worries.
The hosts dominated the first half without joy, while Palace were on top for most of the second.
It was the Owls, though, who took the points, Lita heading home Michail Antonio's cross for his third goal since a January loan move from Swansea.
Defeat leaves Palace four points away from an automatic promotion place.
In a second half in which the visitors looked the likelier scorers, the Owls had relied on Chris Kirkland to keep them level, saving from Stephen Dobbie's half-volley.
But Ian Holloway's Eagles have now failed to win in their last 10 away games and Palace created little once Lita rose above the visiting defenders to convert Antonio's cross off the underside of the bar in the 81st minute.
Wednesday, who are five points clear of trouble at the bottom, should have taken the lead much earlier, with David Prutton's 25-yard half-volley going inches over the crossbar.
Lita had also missed a first-half chance to head his side into the lead while Kieran Lee's volley was blocked on the line and the Owls had to wait until Lita's late intervention to seal the win.
Sheffield Wednesday manager Dave Jones: "It was a hard-earned win from a dogged performance.
"I thought we were solid, we protected Chris Kirkland really well and we deserved the win in the end.
"I was really pleased with the goal, it was a fantastic ball in from Antonio and you know what you get from Leroy, it's what he's all about. He was hardly in the game for long spells but when he gets the chance he usually puts the ball in."
Crystal Palace boss Ian Holloway: "We struggled to get our game going and they seemed to have a bit more belief about them than us.
"The second half was better and we looked the team more likely to grab a goal but it just wasn't to be.
"I don't think we deserved to lose, but did I think we did enough to win it? Probably not. I felt a draw would have been a fair result."
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +3:24
Chris Kirkland takes the direct free kick.90:00 +3:24 Booking
Booking Mile Jedinak goes into the book for unsporting behaviour.90:00 +3:18
Free kick awarded for an unfair challenge on Jermaine Johnson by Mile Jedinak.90:00 +3:03
Jacob Butterfield takes a shot. Blocked by David Prutton.90:00 +2:56
A cross is delivered by Yannick Bolasie, Miguel Llera makes a clearance.90:00 +1:40
Unfair challenge on Chris Kirkland by Glenn Murray results in a free kick. Free kick taken by Chris Kirkland.90:00 +0:54
Free kick awarded for a foul by Jermaine Johnson on Kevin Phillips. Mile Jedinak takes the free kick.90:00 +0:31
Leroy Lita takes a shot. Save made by Julian Speroni.87:01 Substitution
Substitution (Crystal Palace) makes a substitution, with Jacob Butterfield coming on for Jonathan Parr.87:01 Substitution
Substitution Aaron Wilbraham joins the action as a substitute, replacing Stephen Dobbie.85:14
Corner taken right-footed by Stephen Dobbie.83:46
Danny Pugh takes a inswinging corner.82:55
Inswinging corner taken from the left by-line by Giles Coke.81:22 Substitution
Substitution Michail Antonio leaves the field to be replaced by Jermaine Johnson.80:21 Booking
Booking Leroy Lita shown a yellow card.80:02
Assist by Michail Antonio.80:02 Goal scored
Goal! - Leroy Lita - Sheff Wed 1 - 0 C Palace Leroy Lita grabs a headed goal from close range. Sheff Wed 1-0 Crystal Palace.79:51
The ball is crossed by Michail Antonio,79:37
The ball is sent over by Jeremy Helan.
Stephen Dobbie takes the direct free kick.78:41 Booking
Booking David Prutton goes into the referee's book for unsporting behaviour.78:36
Free kick awarded for an unfair challenge on Kevin Phillips by David Prutton.77:42
A cross is delivered by Jeremy Helan.75:01
Stephen Dobbie takes the free kick.75:01 Booking
Booking Booking for Anthony Gardner.74:55
Handball decision goes against Anthony Gardner.74:22
Danny Pugh crosses the ball.72:35
Yannick Bolasie takes a shot. Save by Chris Kirkland.71:05
Free kick awarded for a foul by Mile Jedinak on Gary Madine. Lewis Buxton takes the free kick.69:03
Lewis Buxton takes the free kick.69:03 Booking
Booking Glenn Murray receives a yellow card.68:41
Glenn Murray concedes a free kick for a foul on Giles Coke.68:12 Substitution
Substitution (Crystal Palace) makes a substitution, with Kevin Phillips coming on for Jonathan Williams.66:28
Inswinging corner taken by Danny Pugh from the right by-line.64:57
Glenn Murray takes a shot. Blocked by Miguel Llera.63:38
Centre by Stephen Dobbie, clearance made by Miguel Llera. Inswinging corner taken by Stephen Dobbie from the left by-line, clearance by Anthony Gardner.62:31 Substitution
Substitution Kieran Lee goes off and Jeremy Helan comes on.60:09
Miguel Llera gives away a free kick for an unfair challenge on Jonathan Williams. Stephen Dobbie takes the direct free kick.59:40
Yannick Bolasie takes a shot. Blocked by Danny Pugh.55:57 Substitution
Substitution Gary Madine replaces Connor Wickham.53:44
Unfair challenge on Kagisho Dikgacoi by Michail Antonio results in a free kick. Jonathan Parr takes the free kick.52:25
Long range effort by Kagisho Dikgacoi goes wide right of the target.51:58
Centre by Michail Antonio.50:30
Stephen Dobbie takes a shot. Anthony Gardner gets a block in. Short corner taken by Yannick Bolasie from the right by-line.49:33
Anthony Gardner concedes a free kick for a foul on Yannick Bolasie. Stephen Dobbie takes the direct free kick.46:53
Inswinging corner taken by Stephen Dobbie from the left by-line.46:22
Corner taken by Stephen Dobbie from the left by-line, clearance made by Anthony Gardner.45:46
Corner taken right-footed by Stephen Dobbie.45:37
The ball is swung over by Yannick Bolasie, clearance by Giles Coke.45:01
The referee gets the second half started.45:00 +1:34 Half time
Half Time The match has reached half-time.44:29
Anthony Gardner concedes a free kick for a foul on Mile Jedinak. Julian Speroni takes the free kick.43:49
Foul by Mile Jedinak on Giles Coke, free kick awarded. Free kick taken by Lewis Buxton.42:04
Connor Wickham is ruled offside. Julian Speroni takes the indirect free kick.41:02
Anthony Gardner challenges Damien Delaney unfairly and gives away a free kick. Julian Speroni takes the free kick.36:59
Outswinging corner taken by Stephen Dobbie.36:22
Stephen Dobbie takes a shot. Miguel Llera gets a block in.36:05
Stephen Dobbie takes a shot. Giles Coke gets a block in.35:18
Unfair challenge on Jonathan Williams by David Prutton results in a free kick. Stephen Dobbie restarts play with the free kick.33:52
The assistant referee flags for offside against Glenn Murray. Free kick taken by Chris Kirkland.31:50
Danny Pugh concedes a free kick for a foul on Jonathan Williams. Julian Speroni restarts play with the free kick.31:32
Michail Antonio sends in a cross, Kieran Lee takes a shot. Peter Ramage gets a block in.27:21
Leroy Lita is ruled offside. Julian Speroni takes the free kick.24:38
Unfair challenge on Michail Antonio by Yannick Bolasie results in a free kick. Direct free kick taken by Anthony Gardner.22:20
Jonathan Williams is caught offside. Free kick taken by Chris Kirkland.21:39
Centre by Kieran Lee, Leroy Lita takes a shot. Julian Speroni makes a comfortable save.19:39
The assistant referee flags for offside against Leroy Lita. Free kick taken by Damien Delaney.17:44
Damien Delaney produces a cross, clearance by Giles Coke. Damien Delaney sends in a cross, Giles Coke makes a clearance.15:06
Ashley Richards challenges Leroy Lita unfairly and gives away a free kick. Free kick taken by Danny Pugh.13:34
David Prutton takes the chance to get an effort at goal. Blocked by Damien Delaney.9:50
Michail Antonio crosses the ball, Damien Delaney manages to make a clearance.8:18
The ball is swung over by Giles Coke.4:29
David Prutton takes a long range shot clearing the bar.1:17
Michail Antonio fouled by Ashley Richards, the ref awards a free kick. Lewis Buxton fires a strike on goal direct from the free kick.0:00
The referee gets the game started.
Live data and text provided by our data suppliers