England moved within one victory of a first Grand Slam since 2003 but they took time to see off battling Scotland.
A tight first half ended 9-9, with three Toby Flood penalties cancelled out by two Chris Paterson penalties and a Ruaridh Jackson drop-goal.
Flood put England 12-9 up as Scotland lost John Barclay to the sin-bin.
England added a converted Tom Croft try and although Max Evans grabbed a converted try for the Scots, Jonny Wilkinson's penalty confirmed victory.
England went into the game as big favourites, with both form and history right on their side, but they struggled at the breakdown, lacked punch with the ball in hand - until Matt Banahan came on at the break - and committed far too many errors.
Johnson frustrated with disjointed win
Open-side flanker James Haskell was one of the few players to shine for England, and in the end their superiority in the scrum and the line-out, plus their solidity in defence, was the difference between the two sides in the Calcutta Cup clash.
Manager Martin Johnson will take the win, but his side's inability to put away the Six Nations' bottom side will not inspire confidence ahead of the trip to face Ireland in Dublin on the final weekend.
Former England hooker Brian Moore - now the BBC co-commentator - said: "England go to Dublin with those Grand Slam dreams still alive but it was closer than it should have been.
"That was solely down to the tremendous efforts of a Scottish team that was given no chance when they came here but performed manfully."
Scotland had suffered three defeats in a row but they looked far more fired up than England and flew into the rucks to prevent the hosts getting any momentum in the first 40 minutes.
It was a mirror image of England's flaky display in the opening half of the win against France a fortnight ago but, whereas they produced a much-improved second 40 minutes against Les Bleus, this time England established control only in the final quarter of the game.
Croft goes over to help England win
The hosts conceded an early penalty for going off their feet at a ruck and veteran Scots full-back Paterson slotted the kick from wide out on the left to give the visitors just reward for a bright start.
Scotland lost their first two line-outs and although they won a penalty at the first scrum, England marched the visitors back 10 yards to win a penalty at the next engagement.
Flood pulled his penalty attempt to the left of the posts but the hosts were soon awarded another scrum penalty and this time the England number 10 made no mistake to level the scores.
It was to turn into a tit-for-tat half as England, despite their greater territory and possession, struggled to make it tell on the scoreboard.
Scotland soon went back in front through a second Paterson penalty. England's struggles at the breakdown continued as they committed too few players but they created enough pressure for Flood to land two penalties and put the hosts ahead for the first time on the half hour mark.
It looked as though England were set to pull away but Scotland refused to back down and they built a platform for Jackson to pop over a drop-goal on the stroke of half-time to make it 9-9.
England flanker Croft was too powerful for Parks to stop
England took off captain Mike Tindall at the break to receive treatment on an ankle injury, and replaced him with Bath behemoth Banahan at outside centre.
The 6ft 7in powerhouse soon made an impact, embarking on a thunderous charge which resulted in Scotland number eight Kelly Brown being stretchered off injured.
It was a worrying moment but Brown was moving his arms and conscious as he left the pitch, to the relief of the hushed crowd.
England came within inches of scoring from the Banahan move, with Nick Easter setting Chris Ashton off on a trademark break through midfield, but the move ended with Tom Wood being hauled down just short.
England went back in front after 56 minutes when flanker Barclay was sin-binned for infringing at a ruck after Johnson's men finally mounted a second threatening attack of the half.
Flood landed the penalty to make it 12-9 before, after referee Roman Poite had been replaced because of a calf injury, Scotland saw replacement fly-half Dan Parks drag a drop-goal attempt wide.
Robinson blames poor set pieces
England came desperately close to scoring as man-of-the-match Haskell and Ashton combined to set Ben Foden free down the right.
It seemed the Northampton man must score as he set sail for the line but Paterson lassoed him with a marvellous covering tackle and forced him into touch three yards out.
With the match moving into the last quarter England brought on four replacements and they finally took control.
One of the quartet, Croft, raced over in the corner to finish off a rare threatening attack with just over 10 minutes to remaining.
It was a fine score too, with Wilkinson firing a long pass to Shontayne Hape, who in turn fed Mark Cueto.
The Sale man found the 6ft 6in Croft unmarked on the wing and he strode 20m before blasting through the despairing tackle of the outgunned Parks to score.
Wilkinson, on for the ineffective Flood, slotted the conversion from the touchline but Scotland refused to capitulate and Evans chipped and regathered to score a fine solo try with five minutes remaining.
Paterson's conversion brought Scotland back to within three points but the hosts ended the match on the attack and, when Geoff Cross brought down a maul, Wilkinson's unerring boot ensured England will travel to Ireland in pursuit of a first Grand Slam in eight years.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.