The 26-year-old, who recently announced he would not be extending his contract with Hoffenheim when it expires in June, has put pen to paper on a four-year deal with their Bundesliga rivals.
The two sides shared a 2-2 draw at the weekend.
"Fabian Johnson is a very interesting player and he's available on a free transfer," Gladbach director of sport Max Eberl said.
"He can play down both sides, both defensively and offensively, and we're delighted he has chosen to join us."
Johnson has made a total of 91 appearances in the Bundesliga since arriving in 2009, initially for two years with Wolfsburg before moving to Hoffenheim in 2011.
He has been capped 16 times by the USA and is expected to feature at the World Cup.