Au singulier, on prononce os « osse » et bœuf « beuffe ». Le S et le F, qui restent à l'écrit, ne sont pourtant pas prononcés et on dit « deux eaux » et « trois beus. »
Pourquoi ?
D'après la banque de dépannage linguistique de l'office québécois de la langue française :
En ancien français, on avait tendance à ne pas prononcer la consonne finale d’un mot lorsqu’elle était suivie du -s du pluriel. Ce phénomène serait à l’origine d’une hésitation, à partir du XVIe siècle, quant à la prononciation des mots bœuf, œuf et os, et ce, même au singulier, l’une ou l’autre des prononciations étant utilisées indifféremment. Ce n’est qu’au XIXe siècle que la distinction entre le singulier et le pluriel s’est fixée comme on la connaît aujourd'hui.