As a prior military man and now a firefighter I have to say you took a huge risk not knowing if he was armed or if he was on some illicit substance that could have fueled a much more serious/violent response on his part.
BUT I think you made the right decision for you. You had a powerful and very attentive protector with you that was ready to (and did) step up and intervene to keep the assailant at bay.
So I guess my honest thoughts for you are this: BRAVO!! you were in a situation warranting action and you took it, and saved a life! That's hero stuff. I'm impressed with you and your decision.
However, please be cognizant of the legitimate risk of intervening as a civilian and don't make a habit of this. I have run too many calls responding to a scene where a "good samaritan" ends up in the hospital with injuries trying to protect a helpless party from assault.
FWIW the shootings in Vegas this past week killed 3 people, 2 police officers and one "good samaritan" (who was legally carrying a firearm) that tried to intervene to stop the active shooter only to have a second one shoot him in the back.
This isn't to scare you, just to shed some light on the often subtle nuances of domestic violence that get over looked in the heat of the moment.
Again I applaud your response and I think you did the right thing!
One more thing... You referred to your roommate as "he", why did "he" let you handle the assailant while he called 911? I don't mean to sound like a chauvinist, I'm just curious.