Johnson has been linked with a move to West Ham in recent weeks.
The 26-year-old joined Everton from Crystal Palace in a £8.6million deal in 2006.
Johnson said: “All I want to do is play for Everton. I love it here.”
Toffees chairman Bill Kenwright said: “We’re absolutely delighted. It is fantastic news for Evertonians.
“This deal further underlines our commitment to keep our best players at our club.
“We continue to build for the future and Andrew is very much part of that future.”