Yuan Shu was naturally no match for Cao Cao. Especially since Cao Cao had only lost territory; his forces remained intact. He had not suffered many losses fighting Liu Bei—mostly it had been a stalemate, a tug-of-war. Added to the troops he had left behind to defend Yu Prefecture and those who had escaped from Yan Prefecture, he still commanded more than two hundred thousand men.
With Old Cao's military acumen, and his advantage in troop numbers, this time he thoroughly drove Yuan Shu south of the Yangtze River and seized control of nearly all of Yu Prefecture. Only part of Pei State County, occupied by Liu Bei and needed as a link to Liu Bei, was left untouched.
In the end, Yuan Shao still released Cao Song and the others to Yu Prefecture. He had at least some regard for his reputation and his pride. Ji Prefecture and Yan Prefecture were both densely populated regions, where many prominent clans were based. Their clan members served different warlords, placing bets on every side to ensure their family's survival. If Yuan Shao killed Cao Cao's family, then could he not kill anyone else's family as well? That was plainly the sort of act that lost Human Heart.
Only Dong Zhuo could do something like that; even Wang the bandit would not. Of course, Wang the bandit still deserved to die. After all, the great clans of You Province had practically been wiped out. The difference was that his killings had a clear political basis, rather than being acts of retaliation because members of those clans elsewhere had caused him trouble...
After returning Cao Song, Yuan Shao did not wait for Cao Cao to attack him. Instead, he first had Zhang Yang provoke Cao Cao and launch an offensive. He also contacted