The 19-year-old was a reported target of Tottenham and Liverpool but has signed a three-and-a-half-year deal at Carrow Road, with an option for another year.
Maddison has made 12 appearances in League One this season, with Tony Mowbray's men currently occupying fifth place.
"We're delighted to sign James as he is a fantastic prospect who has already made a mark at Coventry at such a young age," Norwich manager Alex Neil said.
"He has real potential to develop, making this deal one we're really pleased to get over the line.
"James will return to on loan Coventry for the rest of the season to continue his development before joining up with us on a full-time basis in the summer."