Conor Chaplin scored the opener totally against the run of play late in the first half then but the hosts levelled in the 85th minute with their first shot on target.
Schmidt then headed in to make it back-to-back wins for the Reds who have moved up from last place to third-bottom of the Championship, just a point off safety.
Aapo Halme returned in place of Kenny Dougall at the base of the midfield diamond in the only change from the win over QPR a week earlier. There were only six substitutes on the Barnsley bench because one of the players was ill and they only brought an 18-man squad to London.
The hosts dominated the first 40 minutes in terms of possession, territory and chances. They thought they should have had a penalty when Jayson Molumby went down in the box then ex-Red Tom Bradshaw headed wide a cross from the left wing after Bambo Diaby clumsily lost the ball on the halfway line.
Jake Cooper headed wide from close range after Sami Radlinger missed a left-wing free-kick by Jed Wallace but the Millwall centre-back had very little time to react. The same player had another headed chance two minutes later, following a free-kick from the right, but missed the target at a tight angle on the left of the box.
The Reds took the lead with virtually their first attack in the 39th minute. Jacob Brown brilliantly beat a defender on the left of the box and pulled the ball back for Chaplin whose excellent finish from ten yards out saw the ball loop into the top right corner.
Chaplin then fired over from the edge of the box after more good work by Brown and the same player came close again in first half injury-time as, after a good counter-attack, his powerful 15-yard shot was beaten away by former Barnsley goalkeeper Bartosz Bialkowski.
Barnsley began the second half brightly and Brown forced Bialkowski into another save low to his left with a 12-yard volley on the right of the box from a cross from left-back Clarke Oduor. Mowatt then let fly from 25 yards and the Polish stopper jumped to his right to push the effort away.
The hosts started to get back on top, with Cooper again putting a chance wide at the back post after Radlinger missed a right-wing corner then Bradshaw surprisingly scooped the ball over the bar from close range with the goal gaping after meeting Wallace’s low cross.
Radlinger and Mads Andersen tried to pass the ball out of their area on 70 minutes and the defender lost the ball, leaving his goalkeeper out of position but Halme blocked substitute Matt Smith’s weak effort. Another substitute Aiden O'Brien tried an acrobatic flick from a left-wing cross but the ball floated just over the bar.
O’Brien levelled from close range after Smith headed a left-wing cross back across goal. Cooper once again headed wide in injury-time from a Wallace free-kick.
But, in the 94th minute, Luke Thomas robbed Wallace of the the ball and crossed from the right for his fellow substitute Schmidt to head home.
Barnsley (4-4-2 diamond): Radlinger; J Williams, Andersen, Diaby, Oudor; Halme, Mowatt, Bahre (Thomas 71mins), Woodrow (Schmidt 84); Brown, Chaplin. Unused: Collins, B Williams, Styles, Sibbick. Yellow cards: Andersen, Diaby, Woodrow, Halme. Goals: Chaplin 39, Schmidt 90+2.
Millwall (4-2-3-1): Bialkowski; Romeo, Cooper, Hutchinson, Ferguson; Williams, Molumby; Bodvarsson (Smith 60mins), Wallace, Skalak (O’Brien 60); Bradshaw (Mahoney 72). Unused: Steele, McCarthy, Brown, Mahoney, Mitchell. Yellow cards: Wallace, Molumby. Goals: O’Brien 85.
-
-
15:02pm
-
15:03pm
-
15:05pm
-
15:06pm
-
15:07pm
-
15:08pm
-
15:09pm
-
15:09pm
-
15:10pm
-
15:12pm
-
15:13pm
-
15:13pm
-
15:15pm
-
15:17pm
-
15:19pm
-
15:22pm
-
15:23pm
-
15:23pmYELLOW CARD
-
15:26pm
-
15:27pm
-
15:31pm
-
15:33pm
-
15:33pm
-
15:36pm
-
15:40pmGOAL!
-
15:40pm
-
15:41pm
-
15:42pm
-
15:43pm
-
15:45pm
-
15:46pm
-
15:47pm
-
15:48pm
-
16:05pm
-
16:08pm
-
16:08pm
-
16:09pm
-
16:11pm
-
16:13pm
-
16:15pm
-
16:16pm
-
16:19pm
-
16:19pm
-
16:22pm
-
16:25pm
-
16:26pm
-
16:28pm
-
16:29pm
-
16:30pm
-
16:31pm
-
16:34pm
-
16:36pm
-
16:38pm
-
16:41pmYELLOW CARD
-
16:42pm
-
16:43pmGOAL!
-
16:45pm
-
16:45pm
-
16:47pm
-
16:48pm
-
16:49pm
-
16:50pm
-
16:51pm
-
16:52pmGOAL!
-
16:54pm