United did not disclose the transfer fee, but British media reported that the German club paid around £1.5 million for the Netherlands international.
Fosu-Mensah, 23, played 30 games in all competitions for United after making his debut in 2016.
"In the last few days I've talked a lot with the coach and conversations... have convinced me that there are great prospects in Leverkusen," Fosu-Mensah, who also played on loan for Fulham and Crystal Palace, said in a statement.
"Both for me personally and for us as a team. That will be really exciting."
Leverkusen are third in the Bundesliga with 29 points after 15 games. They travel to Union Berlin on Friday.