There are two types of cryptography. Symmetric and Asymmetric.
In Symmetric, the same key is used in both the parties to encrypt/decrypt the data. Examples include AES algorithm. If the MITM knows the symmetric key used by the client and server, he can easily decrypt the messages.
In Assymetric, a public-private key pair is used.
One way of arriving at a common secret using asymmetric cryptography is as follows:
Server generates a pub/pri key-pair say using RSA algorithm. It puts the public key in a certificate and sends it to the client.
Client will generate a random pre-master secret and encrypts it using the public key got from server's certificate and sends the encrypted pre-master secret in the "client key exchange" message.
Server will then decrypt the encrypted message using its private key associated with the public key.
Now both server and client have the same pre-master secret. They will use that and some other random values(like clientHelloRandom, serverHelloRandom which are sent in plain text during clientHello and serverHello handshakes) to derive the same master key.
This master key is used to derive session keys using which the Applications data is encrypted/decrypted.
Please note that a MITM cannot impersonate a client because the pre-master key generated by the legitimate client is sent by encrypting with the public key. the MITM cannot decrypt it as long as he doesn't know the private key and only the server knows it.(private key is not shared.) And because the MITM doesn't know the private key, it cannot impersonate the server as well.
So, when a cipher suite like TLS_WITH_RSA_AES128_CBC_SHA is used, RSA is used to generate pub/pri key pair, DSA is used to sign the certificate sent by server, and once the symmetric (same) master-secret and session keys are derived by both client and server, AES128(symmetric key encryption/decryption algorithm) is used to encrypt/decrypt application data.
Hope this clarifies.