Premiership leaders Northampton's winning start to the season was wrecked by struggling London Irish at the Madejski Stadium.
First-half tries by Jonathan Joseph and David Paice helped give Irish an 18-0 interval lead as they bounced back from last weekend's thumping at Worcester.
Topsy Ojo and Jamie Gibson added two more after the break to lead 33-3.
Ken Pisi and Phil Dowson crossed in a late rally by Saints, but it was not enough to prevent Irish's second win.
Steve Shingler's boot provided 16 points for the home side, Ian Humphreys having chipped in with a drop goal just before the break.
Stephen Myler kicked both his conversion attempts and a penalty for Northampton, who stay top as a result of Harlequins' defeat at Exeter.
There was nothing on the cards to indicate an Irish victory, let alone a performance like this, from a side languishing 11th in the Premiership, the Exiles having conceded an average of 36 points in the five games prior to this one.
But the only unbeaten record in the Premiership was wrecked as the Irish back division shone, none brighter than England centre Joseph, who made his Test debut on the summer tour of South Africa.
“We embarrassed ourselves. We let ourselves down with a performance that was not acceptable”
Jim MallinderNorthampton director of rugby
Joseph inspired the biggest upset of the Premiership season to date, touching down for the opening try, as well as playing a key role in Paice and Ojo's tries.
The first 24 minutes were pointless until Irish snaffled an overthrown Northampton line-out and moved the ball wide for Joseph to stab a grubber kick through for Marlande Yarde to kick on.
Vasily Artemyev, Northampton's stand-in full-back, failed to cover the bouncing ball and the youngster followed up for his second try of the season.
Full-back Shingler then extended the Exiles' lead with a penalty before Joseph hit the line at blistering pace inside the Northampton 22. And, two phases later, Paice twisted over the line to score, Shingler this time converting.
Humphreys' 40-metre drop-goal handed London Irish an 18-0 lead at half-time, before Northampton finally responded after the restart with a penalty from Myler.
But Irish then hit Northampton with a brilliant third try, Joseph beating Myler for pace and then drawing two defenders before slipping a delightful pass to Ojo, who was tackled by Pisi but had the momentum to roll over the line and score.
Shingler edged the Exiles further ahead before Shingler swung a long pass to Treviranus, who held off two defenders and sent Gibson racing away for the fourth try.
Northampton, to their credit, kept plugging away with scrum-half Lee Dickson particularly lively, working a try for Pisi in the right corner before Dowson burrowed over a second Northampton try.
But Shingler added two more late penalties as Irish rounded off their best performance of the season to climb a place to 10th.
VIEW FROM THE DRESSING ROOM
London Irish director of rugby Brian Smith:
"I would like to see JJ get another crack. He is a class act and his talent is well regarded by the English coaches. And, with Mike Catt now part of the England set-up, he knows what JJ can do.
"It was a big challenge for us because confidence wasn't high. But the boys really fronted up today.
"They got no change out of us at scrum time and in the line-out drive and we have a lot of class in the back line."
Northampton director of rugby Jim Mallinder:
"There was no intensity there from us. Our accuracy in just about everything we did that first 60 minutes was awful.
"The talk in the week had all been about how difficult this game was going to be, how desperate London Irish would be, how we should not be looking to give their outside backs any ammunition.
"But, mentally, if you underestimate any team in the Premiership then you will get turned over and that is what happened.
"We weren't up for today's game and that showed. We embarrassed ourselves. We let ourselves down with a performance that was not acceptable."
Cotter for Aulika (59), Moates for O'Leary (60), Hala'ufia for Treviranus (60), Yanuyanutawa for Lahiff (60), Armitage for Tagicakibau (67), Geraghty for Humphreys (67), Malton for Paice (74), Low for Skivington (77).
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.