The 23-year-old defensive midfielder's new deal includes a buyout clause of £35m following rumoured transfer interest from Arsenal, Liverpool and Chelsea.
"I am very happy for the vote of confidence that Sporting CP have given me once more," Carvalho said. "This will motivate me even more to make sure I am at my best. I want to tell the fans that I am really happy with the contract until 2020 that I have signed and you can expect me to do by best.
"I have been here a long time and I want to stay here. I am really proud to play for this institution and I want to say something to the kids playing at the Academy - 'Fight for your dream. Carry on working hard and you will be rewarded.'"
Carvalho has been with Sporting since the age of 13.