Norwich City stretched their unbeaten run to four games as Bradley Johnson's first-half header earned them victory over Stoke City in a scrappy game.
Johnson guided the ball in from a controversial Robert Snodgrass free-kick at the end of a turgid first half.
The visitors improved after the break and Kenwyne Jones wasted a good chance.
But Stoke never looked like securing a first away win since January and the Canaries held on to climb above the Potters in the table.
Norwich's recent resurgence has seen them win two of their last three Premier League games and move a point ahead of Stoke with 10 points from 10 games.
Stoke have only registered one Premier League victory this season, have scored only eight goals in 10 games and have not won away from home in 15 league matches
And they were good value for the victory, albeit from a tame game in which Stoke only seriously threatened during a nervy finale.
Having followed up last Saturday's impressive draw at Aston Villa with a battling - if slightly fortunate - win over Tottenham in the Capital One Cup in midweek, the Canaries had good reason for optimism against a side who had failed to win in 14 away Premier League fixtures.
The Potters and their ever-bullish manager Tony Pulis would have argued that statistics can be deceiving.
Stoke have already played both Manchester clubs, as well as Arsenal, Chelsea and Liverpool, so the fact they have only lost two league matches this term was probably the more noteworthy pre-match fact.
But on this form it was plainly obvious as to why the visitors have drawn so many games.
Although constantly - and often very harshly - criticised for a long-ball, football-by-numbers approach, Stoke seemed to lack the dynamism, creativity and ambition in attack.
In Charlie Adam they have a player with undoubted quality, but he was rarely involved and their lack of adventure meant he had their only worthwhile efforts on goal in the first half.
The midfielder shot narrowly wide with the first, a clever curled effort from 25 yards after a poor defensive clearance, and he then fired another long-range strike straight at keeper John Ruddy.
But despite a decent spell in the latter stages of the opening period, it was Norwich who made most of the first-half running.
Wes Hoolahan, who excelled against Villa last week, was unsurprisingly at the centre of nearly all the home side's good work.
He was busy and dangerous throughout and teed up Anthony Pilkington, whose close-range strike was well kept out by the feet of visiting goalkeeper Asmir Begovic.
That was the best opening of a listless first half until Johnson rose brilliantly to head home Snodgrass's inviting free-kick from the left.
Stoke, who have now not won away from home in the league since beating Blackburn in January, felt the set-piece award was harsh and also that they should have had their own free-kick in the build-up for a foul on Adam.
Pulis remonstrated with referee Andre Marriner at the interval but perhaps his main frustration was with his own side.
"It's seven points from the last three Premier League matches for Norwich now. Bradley Johnson's goal was the difference in a match that was sadly lacking many highlights. Stoke's long search for an away league victory continues - their last success coming on 2 January against Blackburn Rovers."
The Potters improved on the resumption, but they still struggled to create chances despite spells of pressure.
Jon Walters should have done better when presented with a one-on-one chance but shot straight at Ruddy.
And substitute Jones could only send an excellent headed chance at the keeper, and then wasted an even better opening when he pulled a shot across goal from 12 yards.
But Norwich defended resolutely and were able to withstand the pressure and claim only their second league victory of the season.
Norwich City manager Chris Hughton:
"You cannot be too disappointed when you have won, but we could have made life better for ourselves.
"We needed to put a little more pressure on them. We could have done better when we had the ball and had two very good chances apart from scoring the goal. We should have pressed more, but that takes a lot of energy, especially when you are playing against a team like Stoke.
"But I thought we dealt with it very well and apart from Kenwyne Jones' header we restricted them to a couple of half-chances."
Stoke City manager Tony Pulis:
"The goal was a disappointment. I have been in to see the referee to have a quick chat. I thought it certainly was not a free-kick, and the disappointing thing is when the lad falls, Andre [Marriner] and the linesman are so close to it.
"He has booked Charlie in the first half for diving - I have just had a look at that and Javier Garrido pushes him in the back, so that is a double kick in the teeth when he gets both those decisions wrong and even worse when they score from it.
"Referees give the decisions they see on the day, and he has seen it differently to what we have. When he sees it again on the television, he will have a different opinion.
"Asmir Begovic did not really have many saves to make and in the second half, I thought we played like the home team. We had the two best chances of the game, and they have got to be scored. It is disappointing to come away with nothing."
Live Text Commentary
Full Time The match has reached full-time.90:00 +2:39
John Ruddy takes the free kick.90:00 +2:39 Booking
Booking Matthew Etherington booked for unsporting behaviour.90:00 +2:35
Free kick awarded for an unfair challenge on Sebastien Bassong by Matthew Etherington.90:00 +0:44
The referee blows for offside against Ryan Shawcross. John Ruddy takes the free kick.88:54
Free kick awarded for an unfair challenge on Bradley Johnson by Steven Nzonzi. John Ruddy restarts play with the free kick.87:19
The referee penalises Glenn Whelan for handball. Anthony Pilkington has a direct shot on goal from the free kick, save by Asmir Begovic.86:59
Robert Snodgrass takes a shot.85:36
Robert Snodgrass takes the free kick.85:36 Substitution
Substitution Wesley Hoolahan goes off and Steve Morison comes on.85:36 Booking
Booking The referee cautions Ryan Shawcross for unsporting behaviour.85:30
Ryan Shawcross concedes a free kick for a foul on Grant Holt.84:11 Substitution
Substitution Glenn Whelan on for Andy Wilkinson.81:49
Charlie Adam gives away a free kick for an unfair challenge on Wesley Hoolahan. Ryan Bennett restarts play with the free kick.76:39
Kenwyne Jones has an effort at goal from deep inside the area missing to the left of the target.76:02
Corner taken by Matthew Etherington played to the near post, clearance made by Bradley Johnson.74:22
Peter Crouch has an effort at goal from deep inside the area missing to the left of the target.72:06
Free kick awarded for a foul by Leon Barnett on Peter Crouch. Centre by Charlie Adam, Kenwyne Jones takes a shot. Comfortable save by John Ruddy.70:03
Alexander Tettey has an effort at goal from just outside the box which goes wide of the right-hand post.68:13 Substitution
Substitution Leon Barnett joins the action as a substitute, replacing Javier Garrido.
Substitution Kenwyne Jones joins the action as a substitute, replacing Jonathan Walters.68:13
Robert Snodgrass delivers the ball.67:46
Short corner worked by Robert Snodgrass.64:23
Effort from close range by Anthony Pilkington goes wide left of the target.60:28 Substitution
Substitution Matthew Etherington joins the action as a substitute, replacing Michael Kightly.59:35
Steven Nzonzi gives away a free kick for an unfair challenge on Wesley Hoolahan. The free kick is swung in left-footed by Bradley Johnson, clearance made by Robert Huth.58:58
Jonathan Walters has an effort at goal from close range which goes wide right of the target.57:46
Free kick taken by Dean Whitehead.57:46 Booking
Booking The referee shows Alexander Tettey a yellow card for unsporting behaviour.57:40
Free kick awarded for a foul by Alexander Tettey on Charlie Adam.57:21
Bradley Johnson takes a shot. Blocked by Ryan Shawcross.56:40
Peter Crouch concedes a free kick for a foul on Ryan Bennett. John Ruddy restarts play with the free kick.56:20
Unfair challenge on Peter Crouch by Sebastien Bassong results in a free kick. Ryan Shawcross takes the direct free kick.53:49
Robert Huth restarts play with the free kick.53:49 Substitution
Substitution Ryan Bennett joins the action as a substitute, replacing Michael Turner.53:49
Robert Snodgrass concedes a free kick for a foul on Dean Whitehead.51:45
Jonathan Walters takes a shot. Save by John Ruddy.50:19
Corner taken by Anthony Pilkington from the left by-line played to the near post, Peter Crouch makes a clearance.46:57
Inswinging corner taken from the right by-line by Robert Snodgrass, comfortable save by Asmir Begovic.46:32
Inswinging corner taken by Anthony Pilkington, clearance by Dean Whitehead.46:01
Wesley Hoolahan takes a shot. Asmir Begovic makes a save.45:01
The second half begins.45:00 +2:21 Half time
Half Time The half-time whistle blows.43:06
Robert Snodgrass provided the assist for the goal.43:06 Goal scored
Goal! - Bradley Johnson - Norwich 1 - 0 Stoke Bradley Johnson scores a headed goal from inside the area. Norwich 1-0 Stoke.42:22
The ball is swung over by Robert Snodgrass,42:22 Booking
Booking Andy Wilkinson goes into the book.42:00
Foul by Andy Wilkinson on Robert Snodgrass, free kick awarded.40:18 Booking
Booking Dean Whitehead goes into the book.38:30
The assistant referee flags for offside against Grant Holt. Indirect free kick taken by Asmir Begovic.37:11
Robert Huth delivers the ball.36:54
Charlie Adam fouled by Bradley Johnson, the ref awards a free kick. Dean Whitehead takes the direct free kick.36:30
Peter Crouch gives away a free kick for an unfair challenge on Michael Turner. John Ruddy takes the direct free kick.34:25
Wesley Hoolahan is caught offside. Ryan Shawcross takes the free kick.33:44
Effort from 25 yards by Charlie Adam. Comfortable save by John Ruddy.33:30
Steven Nzonzi crosses the ball, clearance by Sebastien Bassong.32:39
Bradley Johnson concedes a free kick for a foul on Dean Whitehead. Free kick taken by Asmir Begovic.32:00
Free kick awarded for a foul by Robert Huth on Grant Holt. Robert Snodgrass takes the direct free kick.31:45
Foul by Robert Huth on Grant Holt, free kick awarded. Alexander Tettey restarts play with the free kick.30:33
Foul by Bradley Johnson on Charlie Adam, free kick awarded. Direct free kick taken by Charlie Adam.30:03
Grant Holt takes a shot.28:42
Effort from the edge of the area by Peter Crouch goes wide of the right-hand post.27:09
Sebastien Bassong delivers the ball, save made by Asmir Begovic.26:45
Wesley Hoolahan delivers the ball, Jonathan Walters makes a clearance.26:15
Inswinging corner taken by Anthony Pilkington from the left by-line played to the near post, clearance made by Dean Whitehead.25:10
John Ruddy takes the free kick.25:10 Booking
Booking Charlie Adam goes into the book for unsporting behaviour.24:16
Anthony Pilkington has an effort at goal from 20 yards. Save made by Asmir Begovic.23:55
Inswinging corner taken right-footed by Anthony Pilkington played to the near post, Geoff Cameron makes a clearance.23:32
Alexander Tettey takes a shot. Blocked by Robert Huth.23:05
Anthony Pilkington takes a shot. Save made by Asmir Begovic.21:45
Unfair challenge on Wesley Hoolahan by Dean Whitehead results in a free kick. Javier Garrido takes the direct free kick.20:45
Free kick awarded for a foul by Sebastien Bassong on Charlie Adam. The free kick is delivered left-footed by Charlie Adam from right wing, Grant Holt makes a clearance.20:01
The ball is swung over by Robert Snodgrass.17:12
Free kick awarded for a foul by Michael Turner on Peter Crouch. Charlie Adam takes the direct free kick.16:29
The assistant referee signals for offside against Michael Kightly. John Ruddy restarts play with the free kick.14:51
A cross is delivered by Robert Snodgrass, clearance by Andy Wilkinson.14:26
Short corner taken by Robert Snodgrass.8:34
Unfair challenge on Peter Crouch by Michael Turner results in a free kick. Robert Huth takes the free kick.7:50
Effort from outside the penalty box by Charlie Adam goes wide left of the goal.5:47
Free kick awarded for an unfair challenge on Alexander Tettey by Andy Wilkinson. Free kick taken by John Ruddy.4:49
Free kick awarded for an unfair challenge on Jonathan Walters by Alexander Tettey. Ryan Shawcross takes the direct free kick.4:03
Alexander Tettey has a drilled shot. Clearance made by Robert Huth. Short corner taken by Robert Snodgrass.3:36
Corner taken by Robert Snodgrass played to the near post, Andy Wilkinson makes a clearance.3:23
The ball is sent over by Robert Snodgrass, clearance by Dean Whitehead.1:56
Free kick awarded for an unfair challenge on Anthony Pilkington by Steven Nzonzi. John Ruddy restarts play with the free kick.1:30
A cross is delivered by Andy Wilkinson, Sebastien Bassong manages to make a clearance.0:00
The referee gets the game underway.
Live data and text provided by our data suppliers