L'origine la plus répandue de cette expression remonterait au Moyen-Age. Les personnes voyageant à cheval et souhaitant s'arrêter la nuit dans les auberges devaient également y manger sous peine de se faire refuser l'hospitalité. Les aubergistes affichaient à l'entrée un panneau: "qui dort, dîne" par souci de rentabilité donc.
Deuxième hypothèse, il semblerait que cette expression ait été emprunté au poète grec Ménandre (-342 av. JC à -292 av. JC) qui affirmait que "le sommeil nourrit celui qui n'a pas de quoi manger". Cette hypothèse se rapproche davantage de la signification actuelle de l'expression: le sommeil fait oublier que l'on a faim!
Sources: www.expressions-francaise.fr, www.linternaute.com, www.secouchermoinsbete.fr