Home fans had little reason to hope for such a result after French striker David Trezeguet put Juventus ahead in the second minute at Craven Cottage.
But Bobby Zamora levelled seven minutes later and when Juventus defender Fabio Cannavaro was sent off in the 27th, things began to look better for the Londoners.
Fulham even went ahead in the 39th minute with Zoltan Gera scoring from close range, and the Hungarian went on to make it 3-1 four minutes after the break, converting a penalty after handling from Diego.
With eight minutes to go in the English capital city, substitute Clint Dempsey beautifully finished it off as his shot curled in at the far post. The American had come on the pitch only six minutes earlier.
To make matters worse for Juventus, Frenchman Jonathan Zebina was sent off in the 90th minute, leaving the Italians with just nine players on the pitch.