Alexander Büttner failed to reappear due to injury, with Sean McGinty taking his place, and the Reds started to reach top gear after the break. It only took eight minutes for Bebe to break the deadlock by profiting from a fierce tackle and some good work by Marnick Vermijl to drive at the defence and lash a powerful drive past Barrett.
Buoyed by making the breakthrough, United assumed almost complete control and Bebe was only denied a second strike five minutes later by a post after showing his strength to work an opening from an acute angle. Macheda teed up Nick Powell but Barrett saved smartly and, after Petrucci fired over, the points should have been made secure. Bebe fed Macheda and the Italian did superbly to unselfishly tee up Larnell Cole but the midfielder's left-footed shot from close range came back off the right-hand post with the goal gaping.
Proceedings fell a little flat again after the dominant spell for the visitors, which became a concern with such a slender lead, and McGinty needed to make an important clearance when the back-four initially failed to deal with a Johnson through-ball.
Joyce introduced Michele Fornasier for goalscorer Bebe in the closing stages as the Reds looked to maintain a clean sheet that would bring the vital three points. Yet a threat remained at the other end and Petrucci should have done better when lashing wide from a promising position following a Cole cross.
The Italian playmaker soon atoned by unlocking the defence with a cute pass through to Macheda and the Under-21s' top scorer threw a neat dummy before blasting past Barrett for his eighth of the campaign, continuing a good run of goalscoring form in his career against the Villans.
The result means Joyce and his squad can look forward to competing at the highest level of second-tier football after the turn of the year with a