Marc Albrighton’s 42nd-minute strike looked to have given Aston Villa a vital win when he latched on to a sensational cross-field pass from Barry Bannan to finish in style.
But Hangeland rose highest to head home a free-kick from Danny Murphy with just seconds remaining.
The visitors should have opened the scoring in the first minute when Albrighton put Stewart Downing in the clear but he delayed his shot and Carlos Salcido cleared the danger.
But Fulham responded immediately with a cross from Simon Davies that was headed straight into the hands of Brad Friedel by Zoltan Gera.
A dangerous cross from Downing in the 10th minute caused Mark Schwarzer to punch the ball clear for a throw-in but both sides were largely entrenched in midfield.
In the 15th minute, Villa’s England under-19 striker Nathan Delfouneso headed inches wide when he rose unmarked on the edge of the six-yard box to meet a cross from Albrighton.
But a minute later it was Fulham’s turn to be wasteful when Gera wriggled free of the Villa defence only to send his shot a yard wide of the target from the edge of the penalty area.
Villa had Friedel to thank in the 18th minute when Davies put Clint Dempsey clear but the American’s angled drive was save by the outstretched foot of the Villa keeper.
The loose ball fell invitingly for Gera but his volley was just too high with the goal gaping.
Villa’s injury crisis deepened in the 33rd minute when captain Nigel Reo-Coker was forced out of the action with what appeared to be a hamstring problem. He was replaced by Ciaran Clark.
Delfouneso wasted another gilt-edged chance in the 40th minute when Bannan’s pass found Luke Young on the right.
Young’s shot was saved by Schwarzer and Delfouneso headed over from six yards.
But Villa went in front three minutes before the interval when a brilliant 40-yard crossfield pass from Bannan put Albrighton through and the Villa winger cut in from the right before drilling the ball into the bottom corner.
Villa’s Delfouneso wasted another chance to get on the scoresheet in the 54th minute when he sent a tame shot into the arms of Schwarzer from the edge of the penalty area.
Andrew Johnson was introduced to the action in the 59th minute in place of Jonathan Greening as Fulham looked to get back into the game.
Johnson has been out for 13 months, initially with a groin injury and then a long-term knee problem, but after making his return in the final minutes against Wigan last week, boss Mark Hughes looked to the striker to save them from defeat.
In the 62nd minute Murphy’s shot from the edge of the penalty area looked destined for the net until Richard Dunne’s diving header diverted the ball to safety.
Fulham’s appeals for a penalty when Dempsey’s cross appeared to hit Dunne’s arm were waved away by referee Peter Walton in the 66th minute.
Villa full-back Luke Young produced a crunching tackle on Salcido moments later which required lengthy treatment and forced the end of his participation in the game. The defender was replaced by Damien Duff for the final 22 minutes.
Johnson brought a fine save out of Friedel in the 74th minute when he burst into the penalty area and drilled a low angled shot towards the bottom corner.
The Fulham striker should have levelled in the 81st minute when he found himself with just Friedel to beat but the Villa keeper dived to his right to thwart him.
In the final minute of normal time, Ashley Young was denied a goal when his header from Downing’s cross was brilliantly saved by Schwarzer.
But centre-half Hangeland earned Fulham a share of the spoils in injury-time when he headed home Murphy’s free-kick.