Ronaldo put United ahead following an excellent pass from fellow Portuguese Bruno Fernandes, who became the joint all-time Champions League appearance holder with his 177th appearance in the league.
United played for nearly an hour with ten men after Aaron Wan-Bissaka was sent off for a risky challenge on Christopher Martins.
After Cameroon winger Moumi Ngamaleu’s equalize, they looked ready to hold on for a point in an enthralling match, but a 96th-minute blunder by replacement Jesse Lingard allowed Jordan Siebatcheu to score the winner.
The home crowd erupted in jubilation, leaving Ole Gunnar Solskjaer to ponder what could have been.
After missing out on qualifying for the knockout stages of the competition last season, United will face Villarreal in a rematch of last season’s Europa League final on September 29.