London Broncos secured promotion back to Betfred Super League after beating Toronto Wolfpack 4-2 in the Million Pound Game in front of 9,266 fans at the Lamport Stadium.
Half-back Jarrod Sammut kicked two penalties as the Broncos ended a four-year absence from the top flight.
Toronto had an early try by skipper Josh McCrone disallowed for offside and fell behind when Sammut kicked a ninth-minute penalty, which proved to be the only score of a defence-dominated first half.
The hosts were temporarily reduced to 12 men when substitute hooker Andy Ackers was sin-binned for a late and high tackle on Eloi Pelissier.
Veteran prop Ashton Sims was held up over the line and second rower Andrew Dixon was brought down just short as Toronto pressed for a try.
Full-back Gareth O’Brien brought them level with a 56th-minute penalty but Sammut cancelled it out two minutes later with his second.
The Wolfpack’s last chance disappeared when stand-off Blake Wallace reached the line with nine minutes left but was held on his back in a magnificent tackle from London full-back Alex Walker.
London coach Danny Ward said: "What have we done? Unbelievable.
“What a group of blokes, they have been a credit to London rugby league since day one when we looked around on the first day of pre-season at a room full of kids.
“We lost a lot of experience and we’ve not replaced anyone. Me and Langers (Jamie Langley) had to drill into them that we were going to do something special this year and they took some convincing.
“But they’ve not stopped since, they’ve been outstanding.”
Toronto coach Paul Rowley said: “Credit to London, I think they were the better team. I don’t think anybody predicted that scoreline but we were the second-best team and I can’t compliment London enough.
“We congratulate them on their victory and wish them the best of luck in Super League.
“We didn’t play well, we didn’t get any territory and we didn’t put any pressure on them.
“That’s sport, unfortunately, this is a bitter pill to swallow but we’ll go again.”