The 53-year-old has been in caretaker charge since Claudio Ranieri was sacked on 23 February, nine months after winning the Premier League title.
Shakespeare, who has never managed full-time, was Ranieri’s assistant after being brought to the club by the Italian’s predecessor, Nigel Pearson.
Leicester have won both of their games with him in charge.
Foxes vice-chairman Aiyawatt Srivaddhanaprabha said: “We always knew the team would be in good hands when we asked him to take charge a fortnight ago.
“He has initiated the type of positive response that we hoped change would bring, showing great leadership qualities and composure under considerable pressure to produce two very important results.
“We have asked him to continue to lead the team this season and we are very happy that he has accepted.”
Shakespeare’s first match as caretaker manager was a 3-1 league victory over Liverpool, and they beat Hull City by the same scoreline.
The Foxes are three points clear of the relegation zone in 15th.
Leicester host Sevilla in the second leg of their last-16 Champions League tie on Tuesday. The Spanish side won the first leg 2-1.