All-time record goalscorer Harris, who had not scored since March, made the most of a rare lapse from Richard Naylor to smash home his 117th goal for the club, having been a first-half replacement for the injured Jason Price.
He had earlier been denied by a fine save from Leeds goalkeeper Casper Ankergren in a tight encounter at the New Den.
History would certainly favour a Leeds win over two legs – they have won all three of their previous semi-final clashes, while the Lions have qualified for the play-offs four times before and never progressed to a final.
But the Londoners will head to West Yorkshire for Thursday’s second leg hoping that counts for nothing as they seek promotion to the Championship after three seasons back in the third tier.
It was the visitors who had the first sight of goal in just the second minute when top scorer Jermaine Beckford expertly held off Zak Whitbread to get on the end of a hopeful knock forward by Naylor, and his shot from the edge of the box forced a save from David Forde.
Millwall had a chance of their own when a quick free-kick was only diverted by Jonathan Douglas towards Andy Frampton, but he volleyed wide from 15 yards.
The Lions then saw on-loan Price hobble off, completing a miserable week for the 32-year-old, who was released by parent club Doncaster on Thursday.
The final ball was lacking from both sides, so Harris took to carving out his own chance, beating Ben Parker and cutting inside, but his shot was well blocked.
Beckford then chased on to a smart ball over the top from Neil Kilkenny and the ball fell to Luciano Becchio, but his snap-shot was wide – and the Argentinian then headed tamely at Forde from a Robert Snodgrass cross.
A brilliant block from Whitbread prevented Beckford from opening the scoring early in the second half after a smart interchange with Becchio.
Sam Sodje then did well to prevent Whitbread getting on the end of a James Henry free-kick, before Ankergren was called into action for the first time, diving superbly to his right to keep out Harris’ instinctive flick from six yards out.
That was the catalyst for a spell of pressure from the home side, and as the noise went up another level, Gary Alexander made space and fired wide from the edge of the box.
Beckford cleverly turned Whitbread to create his best chance but he could not quite get enough swerve on the ball to get his effort on target.
But the deadlock was broken 20 minutes from time, when Alexander raced on to a long ball and crossed into the box, where Naylor missed it and Harris controlled and saw off the challenge of Jonathan Douglas before firing into the bottom corner, sparking a mini-pitch invasion.
Frampton headed a Henry free-kick just over the top as the Lions pressed for a second, while the Lions’ own goal escaped without alarm.