Jason Roberts was on target twice as Wigan came from behind in impressive fashion to edge out Manchester City.
Antoine Sibierski headed City in front after only three minutes but in-form Roberts broke clear to level quickly.
Lee McCulloch headed in for Wigan, Roberts held off Sylvain Distin before slotting home and Henri Camara turned inside Richard Dunne for another.
But City set up a frantic finale with a stunning volley from Joey Barton and a close-range finish from Andy Cole.
There was little to hint at the woeful first half ahead for City when they swept into the lead after three minutes.
Trevor Sinclair's short throw found David Sommeil and he crossed for Sibierski to outjump Pascal Chimbonda and head past Mike Pollitt.
Wigan had already looked dangerous, however, and it was no surprise when they drew level eight minutes later.
Jimmy Bullard's long pass released Roberts and he left Distin trailing in his wake to score with a composed finish.
And Wigan were deservedly ahead in the 23rd minute when McCulloch rose at the far post to guide Teale's cross beyond David James.
City were desperately unlucky not to equalise almost instantly when Barton played a fortuitous one-two with Darius Vassell and lobbed over the oncoming Mike Pollitt, only to see the ball rebound to safety off an upright.
Wigan were well in command and Teale looked poised to add a third six minutes before the interval after he was sent clear by Camara but James dived bravely at his feet to save.
But there was to be no reprieve for City as Roberts added his second and Wigan's third on the stroke of half-time.
Distin and Ben Thatcher collided to let in Roberts and he showed tremendous strength to simply brush City's skipper aside as he attempted to recover and slide another fine finish past James.
City, as they had to do, started the second half in better fashion and Barton was again unfortunate, seeing a shot saved by Pollitt and a header cleared off the line by Chimbonda.
Pollitt made a splendid double save after 67 minutes to preserve Wigan's two-goal lead, diving to save from the outstanding Barton and then recovering superbly to block Vassell from only six yards out.
City's agony increased as Wigan added a fourth five minutes later to seal the win.
Graham Kavanagh found Camara and he outwitted Dunne before beating James in comprehensive fashion.
Barton had been magnificent in a losing cause and it was a fully-deserved reward when he gave City some hope with 13 minutes left, sending a volley high past Pollitt.
City had shown great spirit after the break and substitute Cole scored their third two minutes from time to leave Wigan hanging on in the closing seconds.
And Sibierski almost snatched a point for City with a header that was only inches off target.
Wigan manager Paul Jewell:
"I thought we performed great for long periods, but I also thought our players got a little bit cocky when we were 4-1 up, which annoyed me.
"We ended up hanging on at the end, but perhaps the fact that we were a little disappointed is a sign of what we expect from our players.
"Our keeper made three or four great saves and you have to give Manchester City great credit for keeping going and making it anxious for us at the end."
Manchester City manager Stuart Pearce:
"When you score three goals on the road you expect to get something, but we defended abysmally and it cost us the game.
"Whether you have a go at the players depends on whether you can look them in the eyes and they know how poor they were - and I think I have honest players here.
"They know they haven't performed to either their standards or mine."
Wigan: Pollitt, Chimbonda, Jackson, De Zeeuw, Baines, Teale (Taylor 83), Bullard, Kavanagh (Francis 72), McCulloch, Roberts, Camara (Connolly 85).
Subs Not Used: Filan, Henchoz.
Goals: Roberts 11, McCulloch 23, Roberts 45, Camara 71.
Man City: James, Onuoha, Sommeil (Dunne 66), Distin, Thatcher, Sinclair, Barton, Reyna (Cole 65), Jihai, Sibierski, Vassell.
Subs Not Used: De Vlieger, Ireland, Wright-Phillips.
Goals: Sibierski 3, Barton 77, Cole 88.
Ref: D Gallagher (Oxfordshire).