But Bennett beat the odds to win an aerial duel with Preston keeper Daniel Iversen and nod home the winner five minutes from time.
That Evans strike was the first real opportunity of the game and taken brilliantly after Scott Sinclair's long angled pass was only half cleared by George Evans, only to fall perfectly for the Preston striker on the edge of the box.
With injuries mounting for the hosts, it was up to Jon Dadi Bodvarsson's turn to lead the line and his cut-back on 15 minutes was missed by everyone, including Bennett, who was poised on the penalty spot but failed to make contact.
Both sides offered little going forwards with Millwall looking for the long ball more often than not, and found one after 35 minutes, but it caught Shaun Hutchinson off guard and his scuffed effort was parried away by Iversen.
With six minutes remaining of the half, Malone equalised as the space opened up in front of him and his 25-yard left-footed strike swerved away from Iversen, who was at full-stretch, and into the top corner.
The Lions came close to taking the lead when Bodvarsson, now back on the wing, crossed for Malone, who had to adjust his body at the last second and side-footed on to the crossbar.
The hosts looked intent on avoiding their 17th league draw of the season as Jed Wallace burst into life after 76 minutes but lashed wide from a tight angle having been slipped in smartly by Ryan Woods.
Seconds later Malone tried to repeat his brilliant strike from the first half but sent a rasping effort high and wide of the Preston goal.
With four minutes of normal time remaining, Bennett gave chase to a bouncing ball in behind the Preston defence and beat Iversen in a foot race to flick the ball into the back of the net.
The Lilywhites were handed a lifeline in the dying moments of added time with a set-piece but Ben Whiteman's cross ended up as a wasted chance and Millwall took all three points.