Tries by Ben Foden, Alex Waller and George North put the visitors ahead.
Elliot Daly crossed to keep Wasps in touching distance at half-time before Christian Wade and Joe Simpson went over to give the hosts the lead.
Ahsee Tuala and Teimana Harrisson crossed for Saints, but Mullan drove over and Gopperth clinched victory.
Willie le Roux looked to have scored a decisive try for Wasps, but the score was rightly ruled out for Joe Launchbury's block on Luther Burrell as he attempted to stop Kurtley Beale from making the final pass.
While the decision was the right one, Wasps were frustrated by a delay in referring the try to the Television Match Official, protests from Saints players having appeared to prompt the review.
Saints defended strongly against waves of pressure late on, but after a let-off a minute before for the same offence, Jamie Gibson was sent to the sin-bin for pulling down the maul and Wasps took full advantage.
The result might have been different had fly-half Stephen Myler not missed four difficult conversion attempts as well as a penalty for the visitors, Gopperth's three successful conversions and two penalties proving decisive.
There was confusion over the final try, as former Saints player Paul Doran Jones and Mullan both initially claimed the score, which was right by the posts.
It left the prolific Gopperth with a simple conversion and he duly bisected the posts to bring a thrilling game to a dramatic conclusion.
Wasps, already assured of a place in the play-offs, remain unbeaten at home this season, with victory restoring their lead over second-placed Exeter to five points.
Wasps director of rugby Dai Young:
"We've got another couple of gears we can go to, but Saracens are still the team to beat.
"We've just got to keep winning and get ourselves into the competition's latter stages."
Northampton director of rugby Jim Mallinder:
"You've got to try to control the game in the last 10 minutes, and we never really managed that.
"We've just got to keep pushing for wins, and hopefully we can secure at least European qualification."
Wasps: Le Roux; Wade, Daly, Beale, Bassett; Gopperth, Simpson; Mullan, Taylor, Swainston, Launchbury (capt), Myall, Johnson, Young, Thompson.
Replacements: Cruse, Bristow, Doran Jones, Symons, Hughes, Robson, Cipriani, Leiua.
Northampton: Tuala; North, Tuitavake, Mallinder, Foden; Myler, Groom; A Waller, Hartley, Brookes, Lawes, Ribbans, Gibson, Wood (capt), Picamoles.
Replacements: Haywood, E Waller, Hill, Ratuniyarawa, Harrison, Dickson, Burrell, Pisi.
Sin Bin: Gibson (80).
Attendance: 21,131.
Referee: Craig Maxwell-Keys (RFU).
For the latest rugby union news follow @bbcrugbyunion on Twitter.

Andrejs Trofimovics, 25, was found stabbed at a flat in Cleveland Road, in the Springbourne area of the town.
Vladislav Pomozov, 45, of Holdenhurst Road, Bournemouth, was found guilty of murder and of wounding with intent.
He was remanded in custody and is due at Winchester Crown Court for sentencing on 6 July.
Mr Trofimovics, from Riga in Latvia, died from a single stab wound, a post-mortem test concluded.
Dorset Police said Latvian national Pomozov was the partner of Mr Trofimovics' mother.
The stabbing followed a "minor confrontation" between Mr Trofimovics and Pomozov at a New Year's party, which was held at Mr Trofimovics' father's flat, police added.
Pomozov was found not guilty of the attempted murder of Mr Trofimovics' father Jevgenijs who sustained non-life threatening injuries.
Following the conviction, Det Sgt Mark Jenkins described Mr Trofimovics' death as "tragic and avoidable".
Matt Mullan's last-minute try and Jimmy Gopperth's conversion with the final kick of the match earned Premiership leaders Wasps victory over Northampton.
[NEXT_CONCEPT]
A man has been found guilty of murder after a man was stabbed to death at a flat in Bournemouth on New Year's Day.