Re: break them really up !
I've been playing with this idea in my mind for a while, it'd be perhaps hard to enforce and probably some downsides, but humour me if you will...
There should be a minimum price for on-selling user data, that must be paid to the user, plus a minimum price for holding user data for that purpose. Something like 10c per fact held and maybe 0.1c per fact sold. So if Google, or importantly Facebook, know my age, postcode, gender, and which football team I support, they owe me 40c per year. They might then infer other facts like my martial status and a political viewpoint. When they make those facts available via an ad auction they owe me 0.6c (for these six example facts). This wouldn't apply to order fulfillment e.g. when I buy something online and the vendor gives my address to a courier.
Given the number of facts actually held and inferred, and their number of users and ad auctions as they search and scroll, this should have meaningful impact on their bottom line. Likely they'd charge advertisers per fact, which would make the advertisers also think twice about how much they need to know all this stuff about their target consumers.
Another nice side effect is that having to pay Russian troll accounts for their (presumably fake) facts would violate laws about financing terror and/or sanctions, so the number of such accounts might finally drop.
I'm not super comfortable about giving payment details to a big tech platform, especially from a privacy perspective, but on the other hand they already know who I am. Requiring a credit card would also make age verification trivial.