Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used. So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.
t, u := x | λx.t | (t u)
Small language (three production rules), definitely universal.
Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple