An extra-time penalty from England captain Harry Kane sent Gareth Southgate’s side to their first major final since 1966.
Denmark had the better of the first half and took the lead from a brilliant free-kick by Mikel Damsgaard after half an hour.
England then managed to hit straight back, as Denmark’s captain Simon Kjaer diverted a cross from Bukayo Saka into his own net from close range nine minutes later.
In a tense second half England came the closest, with Kasper Schmeichel producing a superb one-handed save from a Harry Maguire header.
England dominated the first period of extra-time and they were rewarded just before the break when the brilliant Sterling was taken down in the box.
Kane’s penalty was initially stopped by Schmeichel, but the rebound fell to the Tottenham Hotspur man, who happily slammed home to send his team into the final where they’ll face Italy.