The 25-year-old Spain international joined the Potters from Barcelona for an undisclosed fee in July 2014.
Bojan, who missed the second half of last season with a knee injury, has scored 10 goals in 41 games for Stoke.
Chief executive Tony Scholes said: "Bojan has made no secret of the fact that he now regards Stoke as his home in a football sense."
Bojan said: "I am very happy and motivated. Stoke City gave me the opportunity to play in the most competitive league in the world, and I have only words of gratitude for their trust and for the way they have treated me.
"Mark Hughes convinced me to come to Stoke, he has helped me and showed his trust in me from the beginning.
"He followed closely the recovery process from my injury and there is no doubt I have signed an extension of my contract thanks to him."
Stoke City forward Bojan Krkic has signed a new four-and-a-half-year contract with the Premier League club.