Dimitar Berbatov's immaculate volley was enough to beat Stoke City and earn Fulham just their fourth victory in 19 Premier League games.
Berbatov smashed the ball in from 10 yards to give them a deserved lead deep into first-half injury-time.
Stoke wasted a glorious chance to level after the break when Mark Schwarzer saved a Jonathan Walters penalty.
But Fulham continued to create the better chances and held on to move nine points clear of the relegation zone.
Stoke were much improved after the interval but, following a lively start to the second half in which Peter Crouch went close and Walters saw his spot-kick brilliantly saved, the hosts were able to see out the win without too much fuss.
Ultimately, it was a piece of Berbatov brilliance that was the difference between the sides but, until his strike, he had been at his most infuriating. The Bulgarian's languid style regularly leads to criticism that his effort does not match his artistry, and for 46 minutes the flicks and tricks failed to come off - his most notable contribution had been to inadvertently elbow Stephen Nzonzi in the face.
But the goal, his ninth of the season on his 200th Premier League start, was worth the wait. Like nearly all of Fulham's best chances in a first half in which the hosts always looked the more likely to open the scoring, it was created on the right flank.
Fulham were the better side before the break and deservedly led when Dimitar Berbatov thumped home a sumptuous volley. Stoke improved in the second half but Jonathan Walters had his penalty well saved and Fulham held on.
Right-back Sascha Riether provided the crucial overlap and the telling cross and Berbatov carefully watched the ball drop onto on his right foot and crashed it past a helpless Asmir Begovic on the angle.
Berbatov had earlier volleyed over from six yards after more good work on the right by Riether and Ashkan Dejagah and, in a rare foray forward on the left, John Arne Riise forced a comfortable save from Begovic.
The visitors had been happy to sit and wait and play on a break - a tactic that brought their only previous away league victory of the season at West Brom.
A fine move involving Walters and Peter Crouch could easily have led to a far-post tap-in for Matthew Etherington but the cross was knocked away to safety by Schwarzer.
Etherington was then taken off with a back injury and the visitors threatened only rarely until the start of the second half when they had their best two openings.
The first came when Fulham defender Philippe Senderos made a complete mess of trying to allow the ball to run back to Schwarzer and the goalkeeper had to be alert to block Crouch's effort.
And they had an even better chance to equalise when Dejagah blocked debutant Brek Shea's cross from the left with his arms but Walters saw his penalty kept out by a fine low diving stop from Schwarzer.
Fulham's defensive improvement
Fulham have now kept two clean sheets in two Premier League games, having conceded in each of their previous 11 top-flight fixtures.
After that it was Fulham who seemed the more likely to add to the tally.
Berbatov went close with another measured volley and Riise almost curled in a delicious second for the home side with the outside of his left foot.
But the hosts did not need the luxury of a second goal and moved up to 11th place in the table, one place and one point behind Stoke, whose abysmal away form continues.
Fulham manager Martin Jol: "Overall, if you saw the first half, we were the better team. It is always difficult against them and they changed their system and have all these big guys up front.
"We should have scored a second goal but we didn't and in the end they could have punished us for the fact that we only scored one goal, but Mark Schwarzer saved the day for us."
Stoke manager Tony Pulis: "The first half was a very, very dead game and the only bit of quality was Berbatov's. Personally I think Fulham did not cause us many problems in the second half. We needed to score the penalty but we didn't.
"If we score the penalty then it is a different game. We have been closer in away games this year and have had opportunities and chances that we haven't taken."
- 01 Schwarzer
- 03 Riise
- 04 Senderos
- 05 Hangeland
- 27 Riether
- 07 Sidwell
- 14 Karagounis (Baird - 81' )
- 16 Duff (Emanuelson - 86' )
- 09 Berbatov (Petric - 90' )
- 11 Ruiz Booked
- 24 Dejagah
- 38 Etheridge
- 06 Baird
- 18 Hughes
- 28 Emanuelson
- 31 Kacaniklic
- 10 Petric
- 20 Rodallega
- 01 Begovic
- 02 Cameron (Jerome - 51' )
- 04 Huth
- 12 Wilson Booked
- 17 Shawcross Booked
- 30 Shotton
- 06 Whelan
- 15 Nzonzi Booked
- 26 Etherington (Shea - 24' )
- 19 Walters
- 25 Crouch (Jones - 70' )
- 29 Sorensen
- 16 Adam
- 18 Whitehead
- 21 Kightly
- 22 Shea
- 09 Jones
- 33 Jerome
Live Text Commentary
Full Time The referee ends the match.90:00 +4:13
Inswinging corner taken left-footed by Brek Shea, save by Mark Schwarzer.90:00 +4:00
Ryan Shotton sends in a cross, Urby Emanuelson gets a block in.90:00 +2:51
Mladen Petric produces a left-footed shot from the edge of the area and misses to the left of the target.90:00 +0:46 Substitution
Substitution Mladen Petric on for Dimitar Berbatov.87:57
Marc Wilson delivers the ball.86:55
Unfair challenge on Dimitar Berbatov by Brek Shea results in a free kick. Direct free kick taken by Steve Sidwell.86:12
Foul by Cameron Jerome on Brede Hangeland, free kick awarded. John Arne Riise takes the free kick.85:26 Substitution
Substitution Urby Emanuelson replaces Damien Duff.84:41
Bryan Ruiz has an effort at goal from just outside the penalty box which goes wide of the left-hand post.84:24
Steven Nzonzi produces a cross, Damien Duff manages to make a clearance.82:22
Robert Huth handles the ball and concedes a free kick. Free kick taken by Mark Schwarzer.81:52
Corner taken by Glenn Whelan from the right by-line.80:49 Substitution
Substitution Chris Baird comes on in place of Giorgos Karagounis.80:33
Shot from just outside the box by Steve Sidwell misses to the left of the goal.78:03
Inswinging corner taken by Glenn Whelan, Headed effort from deep inside the penalty area by Robert Huth misses to the left of the goal.77:44
The ball is delivered by Cameron Jerome, blocked by John Arne Riise.77:16
Outswinging corner taken by Giorgos Karagounis from the right by-line, Glenn Whelan makes a clearance.76:47
Centre by Bryan Ruiz, Steve Sidwell takes a shot. Blocked by Robert Huth.74:53
Bryan Ruiz fouled by Robert Huth, the ref awards a free kick. Direct free kick taken by Philippe Senderos.
Direct free kick taken by Brede Hangeland.74:13 Booking
Booking Ryan Shawcross is booked.73:57
The assistant referee signals for offside against Cameron Jerome.72:14
Shot from just outside the area by Giorgos Karagounis goes over the bar.71:45
Giorgos Karagounis takes a short corner.71:29
Giorgos Karagounis sends in a cross, clearance by Ryan Shawcross.70:25
Damien Duff sends in a cross, comfortable save by Asmir Begovic.69:05 Substitution
Substitution Kenwyne Jones comes on in place of Peter Crouch.66:28
Dimitar Berbatov challenges Ryan Shawcross unfairly and gives away a free kick. Asmir Begovic takes the direct free kick.66:08
Shot from 18 yards by John Arne Riise. Blocked by Ryan Shawcross.64:09
Shot from just outside the area by John Arne Riise goes over the bar.63:20
Inswinging corner taken by Glenn Whelan from the left by-line played to the near post, Bryan Ruiz makes a clearance.63:07
Ryan Shotton crosses the ball, Ashkan Dejagah manages to make a clearance.62:28
Corner from the left by-line taken by Giorgos Karagounis, comfortable save by Asmir Begovic.62:16
John Arne Riise crosses the ball, clearance made by Ryan Shotton.60:54
Dimitar Berbatov concedes a free kick for a foul on Ryan Shotton. Ryan Shawcross takes the free kick.60:12
Brek Shea has an effort at goal from outside the area which goes wide right of the goal.59:23
Headed effort from inside the penalty area by Peter Crouch misses to the right of the target.58:44
Shot from 18 yards by Dimitar Berbatov. Asmir Begovic makes a brilliant save.57:11
Cameron Jerome concedes a free kick for a foul on Brede Hangeland. Steve Sidwell takes the direct free kick.56:21
The offside flag is raised against Cameron Jerome. Free kick taken by Brede Hangeland.55:48
Free kick awarded for a foul by Cameron Jerome on Sascha Riether. Sascha Riether restarts play with the free kick.55:30 Penalty
Penalty taken by Jonathan Walters saved by Mark Schwarzer. Fulham 1-0 Stoke.54:40
Ashkan Dejagah is penalised for handball and concedes a .52:29
Foul by Giorgos Karagounis on Glenn Whelan, free kick awarded. Glenn Whelan has an effort direct from the free kick.50:34 Substitution
Substitution Cameron Jerome is brought on as a substitute for Geoff Cameron.49:09
Ashkan Dejagah is flagged offside by the assistant referee. Indirect free kick taken by Asmir Begovic.47:42
Peter Crouch takes a shot. Save by Mark Schwarzer.45:52
Giorgos Karagounis takes a shot. Ryan Shawcross gets a block in.45:39
The ball is crossed by Ashkan Dejagah.45:01
The second half begins.45:00 +3:33 Half time
Half Time The ref blows to signal half-time.45:00 +1:48
Sascha Riether provided the assist for the goal.45:00 +1:48 Goal scored
Goal! - Dimitar Berbatov - Fulham 1 - 0 Stoke A goal is scored by Dimitar Berbatov from inside the penalty area to the top right corner of the goal. Fulham 1-0 Stoke.45:00 +1:44
Sascha Riether delivers the ball.45:00 +0:07
Effort on goal by Ashkan Dejagah from outside the area goes harmlessly over the bar.44:54
The ball is swung over by Marc Wilson, clearance made by Brede Hangeland.44:42
Marc Wilson delivers the ball, clearance made by Brede Hangeland.43:28
Steve Sidwell produces a right-footed shot from just outside the penalty box that misses to the left of the goal.41:40
John Arne Riise takes a shot. Blocked by Robert Huth.41:23
Centre by Sascha Riether, Ryan Shotton manages to make a clearance.39:48
Steve Sidwell produces a cross, clearance made by Robert Huth.39:30
Jonathan Walters delivers the ball, Brede Hangeland manages to make a clearance.37:47
Brek Shea challenges Brede Hangeland unfairly and gives away a free kick. Mark Schwarzer takes the direct free kick.35:06
Bryan Ruiz decides to take the corner short.34:14
Bryan Ruiz crosses the ball from the free kick left-footed from right wing, clearance made by Ryan Shawcross.34:14 Booking
Booking The referee cautions Marc Wilson for unsporting behaviour.34:08
Marc Wilson challenges Ashkan Dejagah unfairly and gives away a free kick.33:37
Sascha Riether crosses the ball, save by Asmir Begovic.30:12
The ball is sent over by Ashkan Dejagah.29:51
Inswinging corner taken left-footed by Damien Duff, Peter Crouch manages to make a clearance.29:29
Damien Duff takes the inswinging corner, Glenn Whelan manages to make a clearance.29:07
John Arne Riise delivers the ball, blocked by Ryan Shotton.27:43
Peter Crouch produces a right-footed shot from outside the penalty box and misses right.26:20
The ball is sent over by Damien Duff, Asmir Begovic makes a comfortable save.24:57
Philippe Senderos crosses the ball, Header from deep inside the area by Bryan Ruiz goes over the bar.23:36
Outswinging corner taken from the left by-line by Damien Duff, Peter Crouch manages to make a clearance.23:36 Substitution
Substitution Brek Shea joins the action as a substitute, replacing Matthew Etherington.22:29
Direct strike on goal from the free kick comes in from Giorgos Karagounis, Asmir Begovic makes a brilliant save.22:29 Booking
Booking Booking for Steven Nzonzi.22:13
Unfair challenge on Bryan Ruiz by Steven Nzonzi results in a free kick.21:37
Damien Duff takes a shot. Save made by Asmir Begovic.20:30
John Arne Riise produces a drilled left-footed shot from 18 yards. Save by Asmir Begovic.20:00
Shot by Damien Duff from 12 yards. Blocked by Ryan Shawcross.19:04
Inswinging corner taken by Damien Duff, clearance made by Peter Crouch.16:42
Corner taken left-footed by Damien Duff from the right by-line, save by Asmir Begovic.10:59
Direct free kick taken by Asmir Begovic.10:59 Booking
Booking Bryan Ruiz goes into the referee's book.10:50
Handball by Bryan Ruiz.10:12
Marc Wilson concedes a free kick for a foul on Ashkan Dejagah. The free kick is delivered left-footed by Damien Duff from right wing.9:30
Bryan Ruiz delivers the ball, clearance by Ryan Shawcross.8:11
The ball is sent over by Sascha Riether, Dimitar Berbatov produces a right-footed shot from close in that clears the bar.6:40
Jonathan Walters sends in a cross, save made by Mark Schwarzer.6:01
Shot by Glenn Whelan from just outside the area goes over the net.5:04
Matthew Etherington fouled by Sascha Riether, the ref awards a free kick. Free kick crossed left-footed by Matthew Etherington, Philippe Senderos makes a clearance.2:53
Bryan Ruiz has an effort at goal from long range that goes wide left.1:55
The referee penalises John Arne Riise for handball. Asmir Begovic takes the direct free kick.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers