Thorpe wasted a glorious opportunity when heading a Petrucci set-piece over the bar.
Warren Joyce introduced Bebe for Henriquez but the Portugal Under-21 international could only smash in a wayward finish after Macheda forced an instinctive stop out of Cropper from the substitute's driven centre.
An equaliser arrived with nine minutes left thanks to Macheda. The Italian striker initially won the ball but Tunnicliffe burst onto it to show great desire by driving forward to tee up Lingard. The winger's shot was pushed out by Cropper but Macheda gobbled up the rebound in clinical fashion.
There was real drama a couple of minutes later from a Reeves corner even though Jack Stephens looked guilty of pushing McGinty into Johnstone. With the keeper out of the picture, a scramble ensued and Lingard cleared off the line before McGinty headed away. The officials did well to spot a handball by Lingard and he was dismissed.
However, Johnstone preserved a point with a tremendous reflex save to keep out Lee's driven penalty and leave United still in with a chance of qualifying for the elite phase going into the final group game at Aston Villa next Monday night.
United: Johnstone; Vermijl, Thorpe, Fornasier, McGinty; Cole, Tunnicliffe, Petrucci, Lingard; Macheda (Veseli 94), Henriquez (Bebe 70). Subs not used: J.Pereira, Lawrence, Ekangamene.