Is it chain of headers rather than a chain of blocks?
Blocks contain a header, and headers are chained, so blocks are chained also.  Note the merkle root from your question: this attaches the transactions in the block to the header, making them a logical combined unit:

That is, you can't attach an arbitrary block to an arbitrary header---each header only attaches to one set of transactions.
You are correct that this expression is wrong: &quot;every [valid] block contains a hash of the previous block&quot;.  That phrasing may be useful for non-techies, but if you find it in any editable technical documentation, you should probably change it.