The Portuguese side, fifth in the top flight, confirmed the move on their website.
The 22-year-old joined United in 2010 with boss Alex Ferguson saying Bebe was the only player he had ever signed without seeing him play.
He never managed to break fully into the first team after some lacklustre displays and was loaned out to Turkish side Besiktas for the 2011/12 season.
Shortly after arriving in Turkey, Bebe picked up a knee injury playing for Portugal Under-21s which kept him out for most of the campaign.
"It is obvious that something went wrong in the most recent part of my career, I had a serious injury from which I have fortunately recovered well," Bebe told Rio Ave's website.
"I am happy to be here and keen to show my worth." (Reporting by Stephen Eisenhammer, editing by Mark Meadows)