Shane Geraghty celebrates kicking the winning conversion for Saints
Northampton staged another rescue act at Franklin's Gardens as replacement Shane Geraghty converted Chris Ashton's last-minute try to deny London Irish.
A drop-goal from Chris Malone, who also kicked five from five at goal, put the Exiles 22-14 up with 11 minutes left.
But Geraghty knocked over a penalty before adding the extras to Ashton's score with the last kick of the game.
Phil Dowson's try put Saints in command before Peter Hewat's intercept try, but Saints leapfrogged Irish into second.
They are now just one point behind leaders Saracens, who lost at home to Leicester, while the Exiles - who would have moved level on points at the top with victory - are three points behind Sarries in a congested top four.
The visitors led 9-6 at half-time, Malone landing three penalties after an early one from Stephen Myler, before the Saints fly-half kicked his second before the interval.
Dowson's try two minutes after the resumption came amid a dominant period for the hosts, but they could not add to their score.
Instead, with Northampton attacking the Irish line, Hewat intercepted Ben Foden's pass on his own 22 and streaked away before holding off the retreating Paul Diggin to score.
Malone's fourth successful penalty stretched the Exiles' lead to 19-11 just after the hour.
Myler landed his third in response, before immediately being replaced by Geraghty, coming on against the club he left in the summer.
Malone's drop-goal appeared to have taken the visitors clear, but Saints - as they had done against Worcester on the opening day of the season, and Bath four weeks ago - staged a dramatic late revival to record their ninth straight win since October.
Geraghty missed a long-range penalty attempt before dispatching his next effort with six minutes left after a dangerous tackle by Chris Hala'Ufia on Lee Dickson.
With another capacity crowd roaring them on, Saints won a close-range scrum and with the last play of the game, the Premiership's top try-scorer Ashton juggled Geraghty's pass before being driven over for his ninth in the league, and 15th in all competitions, this season.
Geraghty, ignoring the taunts of his former team-mates, stepped up to land the winning conversion from in front of the posts.
Chris Ashton on doubts about the grounding of his try: "I definitely grounded it. I wasn't going to let that ball go, although it bounced upwards off my chest and not forwards.
"Scoring tries means everything to me. I'm working on my all-round game including my kicking, but wings must score tries."
Northampton rugby director Jim Mallinder:
"We want this to be a difficult place to win for visitors, and nobody has won here in the league this season.
"Chris [Ashton] is a natural finisher whose game is improving at this level with every outing. He got one chance and scored in front of the England coaches [Brian Smith and John Wells].
"Personally, the intercept try we conceded was disappointing, although I won't criticise the decision-making that went before it."
London Irish head coach Toby Booth: "It is always a cruel way to lose, and I feel we did not get the rub of the green in the 50-50 decisions, but then that's not unusual away from home.
"The last scrum interests me since we drove them five yards yet they got the put-in. I'll be looking closely at that one. I'll also study the try, but in reality, it was scored and it's history.
"There are a lot of similarities between the teams, both like to play positively, with width and tempo. And when you have a lad like Ashton you can always turn things round.
"We kept him quiet until the last 20 seconds, but that is the sign of a genuine finisher - one chance, one try."
Northampton: Foden; Ashton, Clarke, Downey, Diggin; Myler, Dickson; Tonga'uiha, Hartley (capt), Murray, I Fernandez Lobbe, Kruger, Lawes, Dowson, Wilson. Replacements: Best for Fernandez Lobbe (54), Geraghty for Myler (66), Mayor for Diggin (68). Not Used: Sharman, Vickers, Mujati, Day, Dickens.
London Irish: D Armitage; Homer, Seveali'i, Mapusua, Hewat; Malone, Hodgson; Dermody, Paice, Ion, Kennedy, Casey, Roche, S Armitage, Hala'Ufia. Replacements: Murphy for Dermody (54), Rautenbach for Ion (54), Perry for Casey (78). Not Used: Coetzee, Fisher, Ojo, Lamb, Lalanne.
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.