Preston North End turned in an excellent performance to put Charlton Athletic to the sword at The Valley and record their second Championship win of the season.
Two superb finishes from Paul Gallagher in the first half put PNE in command, with Daniel Johnson curling home the third after the break.
Defensively, the visitors were strong too, limiting their London hosts to very little in an attacking sense.
North End were ahead inside two minutes as skipper-for-the-night Gallagher found the net with a curling free-kick.
His second goal in the 36th minute was even better, the midfielder following-in his own corner which had been punched clear and finishing with a shot from a tight angle into the far top corner.
Johnson's sixth goal of the season put the icing on the cake in the 62nd minute, his curling left-foot finish the type seen a number of times from him.
The margin of victory could have been greater, with Gallagher forcing Charlton keeper Nick Pope into a fine save just before half-time, while Alan Browne put a header against the bar.
Simon Grayson had made three changes to the North End side.
Marnick Vermijl, Browne and Eoin Doyle came into the starting XI, with Tom Clarke was absent with a shoulder injury sustained in Saturday's 0-0 draw with Cardiff.
In the centre of midfield, Browne replaced Welsh, with Doyle taking the place of Stevie May up front.
It was makeshift central defence put out by Grayson, Calum Woods partnering Bailey Wright in the middle.
Paul Huntington was named among the substitutes, fit enough to join the squad after a hamstring strain.
In the absence of Chris Kirkland, Steven James was the goalkeeper cover on the bench.
North End were on the front foot from the first whistle, Adam Reach surging through midfield and being brought down by Jordan Cousins 22 yards out.
Gallagher stepped up to take it, lifting it over the wall and down into the corner of the net to beat keeper Nick Pope.
They kept their foot on the gas, another free-kick bringing them a sight of goal in the eighth minute.
This time it was Jordan Hugill tripped inside the 'D', the foul earning Addicks defender Alou Diarra a yellow card.
Gallagher again took it, his effort this time getting blocked by the wall with the ball eventually scrambled to safety by the home defence.
Daniel Johnson forced a diving save out of Pope with a low left-foot shot, Browne the creator with a strong run cutting inside from the right.
A yellow card came Gallagher's way for a tackle on Cousins, the scorer mistiming his challenge after losing his footing.
Tony Watt had Charlton's first chance of the game in the 27th minute, his shot on the turn from the edge of the box going straight at the well-positioned Jordan Pickford.
A speculative Morgan Fox shot from distance then flew harmlessly wide as the home side found their feet a bit more.
But North End soon regained the initiative and extended their lead with a great finish after another spell of pressure.
Browne saw a shot from 16 yards bounce off a defender and go behind for a corner.
Gallagher delivered it from the right, the ball cleared as far as Vermijl whose first-time shot from outside the box hit a Charlton head and whistled inches wide.
Over to the other side went Gallagher, playing in the corner towards the near post where Pope punched clear.
The ball fell back towards Gallagher on the side of the box, the skipper striking a beauty of a right-foot shot across goal and into the far top corner.
Gallagher was not far off completing a hat-trick in the 42nd minute, his 20-yard chip tipped over the bar at full-stretch by Pope.
He took the resulting corner, Browne getting on the end of it at the near post but sending a header against the bar.
Early in the second half, Browne and Fox were booked after a dust-up in midfield, tempers fraying with players from both sides wading in to get involved.
Once the handbags had been put away, referee Simon Hooper deemed a yellow card for the pair suffice.
Charlton had just made a double substitution when North End found the net for a third time just beyond the hour mark.
After a corner had been cleared - that created by great work from Reach - Johnson picked up possession 10 yards outside the box.
That is typical DJ territory and you almost knew what was coming next, Johnson working his way inside and then from a couple of yards outside the box, curling a left-foot finish into the far corner.
The midfielder almost added a fourth soon after, his shot from the edge of the box travelling into the side-netting.
Some of the travelling PNE fans behind that goal thought it had gone in, there being a few cheers before they realised it had gone wide.
Paul Huntington replaced Vermijl for the last 20 minutes, the change seeing Woods move into his more accustomed right-back role.
That also gave Huntington some playing time to ease him back in after his hamstring trouble.
Gallagher's night came to a close in the 79th minute, soon after getting a knock which saw him need treatment from physio Matt Jackson.
He was able to get up and play on for a few minutes, and seemed to be moving freely enough when he came off to be replaced by Neil Kilkenny.
With him also on a booking, it was a sensible decision to bring him off with Brighton in mind on Saturday.
Doyle was replaced by Will Keane in the 84th minute, the Irishman having put in a hard-working shift up front but without getting much of a look in at goal.
Late on, Reach's cross from the left-wing found Hugill but the striker could only guide a header wide of the back post.
Browne, impressive all night, had a strong run from midfield which took him to the edge of the box but he dragged a low shot wide.
As the clock hit the 90-minute mark, Reach's pass played in Keane down the left hand side of the box, the substitute turning smartly but firing his shot over the bar at the near post.
Charlton: Pope, Solly, Diarra, Sarr, Fox, Bergdich (McAleny 46), Ba (Jackson 61), Cousins, Holmes-Dennis, Watt, Ahearne-Grant (Makienok 61). Subs not used: Ghoochannejhad, Kennedy, Moussa, Henderson.
Booked: Diarra 8, Fox 48
PNE: Pickford, Vermijl (Huntington 70), Woods, Wright, Cunningham, Gallagher (Kilkenny 79), Browne, Johnson, Reach, Doyle (Keane 84), Hugill. Subs not used: Welsh, Davies, May, James.
Booked: Gallagher 26, Browne 48, Cunningham 55
Referee: Simon Hooper (Wiltshire)