The 25-year-old Republic of Ireland international was signed by Neil Lennon from Hibernian in August 2010 for a fee thought to be around £1m.
Stokes has scored 72 goals in the Scottish top-flight with Celtic, Hibs and in an earlier loan spell at Falkirk.
Last season Stokes endured a frustrating spell when he was out of action for several months with an ankle injury sustained in a pre-season friendly with Inter Milan.
But the Dubliner has impressed since his return from that injury, producing a man of the match display in the Scottish Cup final win over Hibernian in May and carrying his good form into the current campaign.
"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."