Lazios Valon Berisha pounced on a mistake from Michael Keane to give the visitors a shock lead, but Raheem Sterling, Harry Kane, an own goal from Mërgim Vojvoda and Jadon Sanchos brace turned the game on its head before half-time.
Berisha scored again early in the second half and Vedat Muriqi also got on the scoresheet for Kosovo, while Kane missed a penalty and Sterling was denied by the woodwork as England struggled to find the back of the net after half-time.
Kosovo began to show signs of fatigue as the game went on and England were able to hold onto the win, rounding off one of the most bizarre and captivating international matches in recent memory.
Reigning European champions Portugal were almost held on the road to Lithuania but eventually secured a comfortable win to move ahead of Serbia in Group B.
Cristiano Ronaldo converted a penalty after seven minutes but were pegged back when full-back Vytautas Andriuškevičius squeezed a header past Rui Patricio.
8 Hat-tricks for Portugal54 Career hat-tricks in total Cristiano Ronaldo has celebrated this fete by adding a fourth goal of the night against Lithuania. . . pic.twitter.com/YdotWh6z1D
— 90min (@90min_Football) September 10, 2019
Goalkeeper Ernestas Šetkus was unfortunate to turn the ball into his own net shortly after the hour mark, with Ronaldo going on to net his second, third and even fourth of the match to put the game beyond Lithuania.
Defensive midfielder William Carvalho added a fifth goal deep into added time.
As well as Euro 2016s winners, World champions France also had a perfect evening against Andorra thanks to goals from Kingsley Coman, Clément Lenglet and Wissam Ben Yedder.
Didier Deschamps side have now won five of their opening six qualification matches.
Elsewhere, Turkey, Serbia and the Czech Republic picked up comfortable wins away from home, while Albania beat Iceland at the Elbasan Arena.
Here are all of Tuesdays results in Euro 2020 qualification.
England 5-3 Kosovo
Montenegro 0-3 Czech Republic
Lithuania 1-5 Portugal
Luxembourg 1-3 Serbia
France 3-0 Andorra
Moldova 0-4 Turkey
Albania 4-2 Iceland