The Bulgarian, who missed the last three games with a groin injury, popped up midway through the second half with a trademark predatory finish from close range, after Steve Sidwell's header had cancelled out Mohamed Diame's early opener.
Kevin Nolan was sent off for his second away match running when he kicked out at Fernando Amorebieta several minutes before half-time in what was miserable start to 2014 for the visitors and under-fire manager Sam Allardyce, but a joyous one for Fulham and striker Berbatov.
The 32-year old was one of seven changes made from the side mauled 6-0 by Hull City in the Premier League on Saturday, with Adel Taarabt also making a return.
An injury-plagued West Ham came into this contest without a recognised central defender, forcing Allardyce into six changes to the side that drew to West Brom.
Yet Rene Meulensteen's team, who have conceded more goals than any other top-flight team, were guilty of showing their own defensive frailties after just six minutes.
A hopeful route one ball from Jussi Jaaskelainen could only be cleared as far as Diame, who duly slotted home from inside the box.
John Arne Riise nearly levelled things just over 10 minutes later, but his crashing 25-yard drive whistled just past the post.
The home side remained vulnerable at the back and could have been further behind after 23 minutes were it not for a superb save from David Stockdale to keep out a Nolan header at the far post.
But Fulham still managed to create chances, with Berbatov forcing a smart save from Jaaskelainen and Amorebieta having a header cleared off the line.
Their pressure paid off just after half an hour, when Sidwell broke free of his man to head home a Damien Duff corner.
And a minute later, the hosts could have been in front when Taarabt rattled the post after some good work from Kieran Richardson.
Things soon got worse for the visitors as Mark Noble limped off with a suspected calf strain, before Nolan was shown a straight red for an off-the-ball incident with Amorebieta just before the break.
The hosts predictably began the second half with a spring in their step, with Riise having the best of an early flurry of chances, racing away down the left before forcing a strong save from Jaaskelainen at the near post.
Taarabt should have given his side the lead after 60 minutes, first forcing Jaaskelainen to tip a glanced header onto the post, before being denied again with the rebound thanks to a terrific save from close range.
Five minutes later, though, and Fulham were ahead after a low Alexander Kacaniklic cross fell fortunately to Berbatov at the far post, who was left with a simple finish.
Substitute Darren Bent nearly added a third five minutes later, bursting through the defence before being denied by the goalkeeper.
West Ham went close to an equaliser late on, but Stewart Downing's low drive went just wide as Fulham held on for a sixth win of the season, while the visitors are now winless in seven.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.