ANSI BASIC has supported SUBs and FUNCTIONs going quite a ways back. Microsoft just didn't bother to support that standard except in its commercial compilers, and later beginning with QBasic.
Some non-Microsoft microcomputer BASICs (for example Extended BASIC on TI-99/4A) support them to some extent.
That may be the case, but the oldest ANSI basic that Wikipedia mentions is "for minimal Basic" from 1978. This text is from 1975, and I doubt that ANSI standard had anything like what we nowadays call functions.
Typical Basics of 1975 had gosub/return, but no functions (= no arguments, no return values). Apart from loop variables, all variables were global.
Commodore Basic had a "def fn" command, but it only supported single-line (= single-statement) functions.
Add in the effect that one had to 'name' subroutines by line number, and compare this with the Lisp's and Fortrans of ten years earlier, and Dijkstra's position becomes quite defensible.
Some non-Microsoft microcomputer BASICs (for example Extended BASIC on TI-99/4A) support them to some extent.