Roberts moves for an undisclosed fee, but it is understood City will pay in the region of £5million up front for the 18-year-old with a further £6million in add-ons.
Roberts is City’s fourth summer signing, and the third Englishman following the arrivals of Raheem Sterling from Liverpool, Fabian Delph from Aston Villa and young Turkey striker Enes Unal from Bursaspor.
City announced the signing via Twitter with a picture of Roberts putting pen to paper but offered no details of the deal.
Fulham simultaneously announced the deal, saying: “The club can confirm that Patrick Roberts has joined Manchester City for an undisclosed fee. We wish him the best of luck in the future.”
Roberts played just 22 times for the Cottagers after he made his debut as a second-half substitute against City in Fulham’s 5-0 defeat at the Etihad Stadium in March last year.
The Cottagers had been keen to keep Roberts, but it is understood he handed in a transfer request in order to seal a move to the Premier League club.
Roberts has represented England at Under-16, Under-17 and Under-19 levels.
He also led the Cottagers to the 2014 FA Youth Cup final where they lost 7-6 on aggregate to Chelsea.
City urgently needed to add homegrown players to their ranks after the departures of James Milner, Frank Lampard, Dedryck Boyata, Scott Sinclair and Micah Richards left them with only Joe Hart and Gael Clichy before their flurry of moves in the past week.