With the current hashrate, how does it still take 10min to solve a bitcoin block?
Mining basically works like this:


Make a candidate block, try all nonces.
If none yielded a valid block, change something in the coinbase transaction.
Repeat from step 1.


Miners collect transactions and then try to create a valid block by bruteforcing nonces. The difficulty of creating a block is related to the maximum hash value a valid block may have.

For example the current blockchain head (while posting this) has a block hash of 00000000000000000077d9c18fdbd5cf45b2652fe6db9089558eb8fc9fc3b397.
As you can see it has many leading zeros, because most hashes above this value are rejected. With the 2^32 nonce values and other header fields you cannot try enough blocks to be likely to hit any block hash small enough. Miners will switch some bytes in transactions (normally in the coinbase) to create even more new block candidates.

Furthermore different miners will try different blocks, as they should have different receivers of the coinbase transactions.