The 25-year-old joined Celtic from Hibernian for a fee of around £1million in August 2010 and has become a key player at the club.
Stokes told the club's official website: "I'm absolutely delighted and I'm just looking forward to the next few seasons. I'm just glad to get it out of the way and I can concentrate on my football.
"I've been happy enough with the way it's gone for me this season. I'd have liked a few more goals by now but that'll come.
"We're unbeaten in the league, we've been doing reasonably well in Europe and we need to get another couple of results now after that big win over Ajax.
"Overall, I've been delighted. I'm enjoying my football and I'm hoping this just helps me kick on.
"It's been great to be involved in Europe after being injured last season. It was hard to watch the lads doing well and not have any input, so I'm delighted so far with this season.
"I knew this was going to be a big season for me because I knew I had to come back after missing the majority of last season and I needed to come back strong and thankfully I've started the season reasonably well."