The hosts declared on 267-8 before the start of play, giving the Sri Lankans a target of 390 to win the contest.
Despite a late flourish from England, Sri Lanka were able to tie the match by posting a score of 201-9.
The home side struggled for large periods during the second session of the day before the wickets of Silva (57) and Mahela Jayawardene (18) left Sri Lanka 225 runs behind on 164-3 at tea.
While England toiled for the previous few hours, the wickets began to tumble in the final session to set up a frantic finish.
Sangakkara (69) and Lahiru Thirimanne (2) were both sent back to the pavilion by James Anderson before Prasanna Jayawardene (8) and Nuwan Kulasekara (1) were dismissed by Chris Jordan and Broad respectively.
England needed just one wicket from the final five balls to claim a sensational victory after Rangana Herath was bowled by Broad for one, but Shaminda Eranga and Nuwan Pradeep defended the final over to secure the draw for their side.