At lunch on the final day, Sri Lanka were 99 for one -- needing a further 291 runs in a minimum of 61 overs to reach their imposing victory target of 390.
Kaushal Silva was 44 not out and Kumar Sangakkara, who in the first innings made 147, unbeaten on 34.
Their second-wicket stand was so far worth 74.
Before play resumed England captain Alastair Cook, predictably, declared on his side's overnight second innings score of 267 for eight.
Also Read
The 24-year-old's innings had helped England recover from the struggling position of 121 for six on Sunday.
Cook's declaration left Sri Lanka needing to break the 30-year-old Lord's record for a winning fourth-innings total in a Test if they were to go 1-0 up in this two-match series.
Back in 1984, the West Indies made 344 for one, requiring 342, against England at Lord's on the back of a brilliant unbeaten double century by Gordon Greenidge.
Sri Lanka had a streaky start to thir chase when, off just the second ball, left-hander Dimuth Karunaratne edged James Anderson past gully for a fortunate boundary.
Although this was a fifth-day pitch, it remained a fundamentally good surface to bat on and, with little in the way of swing, England knew they would have their work cut out to take the 10 wickets they needed for victory.
But they had unsettled Sri Lanka with well-directed short-pitched deliveries and it was from such a rising Broad ball that Karunaratne (16) obligingly turned a catch straight to Sam Robson at short-leg to leave the tourists 25 for one.
Cook deployed all his bowlers, including debutant off-spinner Moeen Ali.
But shortly before lunch the gutsy opener cover-drove Broad for four.