The forward’s brace added to Danny Batth’s early opener but a three-goal half-time lead flattered the hosts.
Fulham were slicker but were made to pay when Ross McCormack missed their best chance with the score at 1-0.
Wolves comfortably held on in the second half after the fight had left the visitors to stay five points adrift of the Sky Bet Championship play-offs.
The hosts made one change with Jack Price in for James Henry while Fulham brought in Seko Fofana and Bryan Ruiz – his first start since a move to Levante collapsed – for Scott Parker and Alex Kacaniklic.
The teams drew 3-3 in the FA Cup after extra time last month – before Fulham won 5-3 on penalties – and Wolves went hunting to avenge that defeat early.
After a quiet opening Dominic Iorfa’s barnstorming run won a 10th-minute corner and Batth nodded in Sako’s cross at the near post.
Forfana fired wide as Fulham looked to hit back before Marcus Bettinelli saved Benik Afobe’s snap-snot from Sako’s knockdown.
Fofana’s 30-yard drive then whistled wide as Fulham pinned Wolves back in their own half.
And the Cottagers should have levelled on 33 minutes when an incisive pass from Hugo Rodallega teed up Lasse Christensen and he slipped in McCormack, who could only shoot straight at Tomasz Kuszczak from 12-yards.
Fulham were slicker than Wolves, keeping possession well, but the hosts kept them at bay and doubled their lead five minutes before the break.
The visitors paid the price for not making their efforts count when Wolves pieced together a flowing move and Sako drilled into the bottom corner from 25 yards.
It was harsh on the Cottagers but their night got even worse in first-half injury time.
Sako was allowed to bulldoze his way into the area and the Mali international fired through Bettinelli’s legs at the near post for 3-0.
It ended the game as a contest with Wolves on cruise control, allowing them to withdraw Sako before the hour.
Rodallega fired well over and Kuszczak claimed Christensen’s shot but they were token Fulham efforts.
Afobe went closest to adding to Wolves’ lead when he cut inside and was denied by Bettinelli with 20 minutes left.