Peter has a good approach, but really SF gives you more ultimate control on saving. So you will, in this particular case, want to create a transaction with a key and then use the same key for both saves. When you call the Save method of a BO, you can provide the transaction key, which means that you can choose which BOs to save on a tran and which to save off of a tran. So in this example, you would call the Save method on the BOs and supply the same transaction for both:
BusinessLayer.TransactionBegin("MyTranKey", Data.IsolationLevel.ReadCommitted);
MyBO1.Save(True, "MyTranKey");
MyBO2.Save(True, "MyTranKey");
BusinessLayer.TransactionCommit("MyTranKey");