Why use -l (the 'ell' option) at all if all that's needed is the filename? In which case, tail (or head without the -r) would suffice (since $NF isn't guaranteed to give the whole filename anyway).
You don't need -l to get sorted output, that's what -t does. Leaving it off makes everything simpler. Just match the first .txt, remove the extension, print, quit.
# Only run this code for lines ending in .txt
# Delete .txt
# Print the line
# exit without printing more lines
ls -t | awk '/[.]txt$/ { sub(/[.]txt/,""); print; exit }'
1) Shell globbing has a maximum number of files, *.txt may break if there are too many.
2) You forgot to remove the file extension.
3) Sneaking an edit under me doesn't mean you didn't forget to remove the file extension