Faits : A. Par ordonnance pénale du 30 mars 2014, le Ministère public du canton de Genève a condamné X._ pour vol à une peine privative de liberté de 30 jours, sous déduction de deux jours de détention avant jugement. Il a en outre révoqué les sursis accordés les 2 avril et 10 juillet 2012 à respectivement une peine pécuniaire de 40 jours-amende, à 30 fr. le jour, et une peine pécuniaire de 10 jours-amende, à 10 fr. le jour. B. X._ a formé opposition à cette ordonnance pénale et sollicité qu'un avocat lui soit désigné. Par ordonnance du 15 avril 2014, le ministère public a refusé d'ordonner la défense d'office. Il a convoqué X._ à une audience fixée au 27 mai 2014 à 9 h 00. Constatant au procès-verbal de dite audience le défaut du prévenu à 9 h 20, cette autorité a rendu sur le siège une ordonnance constatant le retrait de l'opposition formée contre l'ordonnance pénale du 30 mars 2014, en application de l'art. 355 al. 2 CPP. C. Par arrêt du 9 septembre 2014, la Chambre pénale de recours de la Cour de justice du canton de Genève a rejeté le recours formé par X._ contre l'ordonnance du 27 mai 2014. D. X._ forme un recours en matière pénale auprès du Tribunal fédéral contre cet arrêt. Il conclut, avec suite de frais et dépens, à son annulation et au renvoi de la cause à l'autorité précédente pour qu'elle statue à nouveau. Il sollicite l'assistance judiciaire. Invités à se déterminer, l'autorité précédente n'a pas répondu, le ministère public a conclu au rejet du recours.