They don't buy players for under their market value. They bought Haaland through the clause in his contract. I'm sure Haaland made sure there was a reasonable buy out clause so that he could leave when it was time. Otherwise he would likely still be at Dortmund because no one would actually want to pay the actual market value. City usually pay above market value for their players, because they can.
About the wage bill, that goes back to being able to be able to win stuff. United can't get players because of the promise of titles anymore, they can however get players buy paying them handsomely. Anyway, City has a higher wage bill than Liverpool by quite a margin. It's quite common knowledge that United pay their players way too much. For example, why do you think Alexis Sanchez chose United over City? It sure wasn't that he thought he'd win more at Old Trafford.
I'm also not surprised Real has higher wage bill. For all the quality City have, I'd still say Real has bigger names.