محمد یکی از فرزندان امام علی(ع) است. نام مادرش خوله دختر جعفر بن قیس بن سلمه بن ثعلبه بن دول بن حنفیه بود. او از اسیران یمامه بود. زمانی که میخواستند آنها را بفروشند حضرت علی(ع) او را خرید و آزاد کرد و سپس به همسری خود برگزید. محمد، امام حسین(ع) را بسیار دوست میداشت. اما اینکه چرا همراه امام در کربلا نبود. مشهور آن است وی در آن زمان بیمار و رنجور بوده. درباره سال درگذشت وی اختلاف نظر وجود دارد. برخی مرگ او را سال 80، 81 و 84 هجری نقل کردهاند.
در بامداد واپسین روز حضور امام حسین(ع) در مدینه، برادرش محمد حنفیه در حالی که غم و اندوه بر وی چیره گشته و بسیار نگران و بیمناک برای امام بود، از سر خیرخواهی نکاتی را متذکر شد. بنابراین به امام گفت: ای برادر، تو محبوبترین مردم و عزیزترینشان نزد من هستی، من هرگز از نصیحت دیگران دریغ نداشتهام، اما تو به نصیحت کردن از همه سزاوارتری، تا میتوانی از بیعت یزید بن معاویه و از شهر ما کناره بگیر، آنگاه پیکهایت را نزد مردم بفرست و آنان را به سوی خود فراخوان، اگر با تو بیعت و از تو پیروی کردند، خداوند را بر این سپاس گزار، اگر مردم بر کسی جز تو گرد آمدند، این کار از دین و خرد تو نکاهد و جوانمردی و فضیلت تو از میان نرود، من از این بیمناکم که تو به شهری درآیی و میان مردم اختلاف افتد. سپس گروهی همراه تو باشند و گروهی بر ضدّ تو و به جنگ برخیزند و تو هدف نخستین نیزهها قرار گیری و آنگاه آن کس که خود او و پدر و مادرش از بهترین این امت هستند، بیش از همه تباه شود و خاندانش بیش از همه خوار گردند.
ابن اعثم گوید: محمد گفت: به مکه برو، اگر آنجا را امن یافتی، این همان چیزی است که من و تو دوست میداریم و اگر جز این بود به یمن برو که مردمش یاران جدّ و پدر و برادرت هستند و آنان مهربانترین و دلسوزترین مردمانند و سرزمینشان از همه جا فراخ تر و خردشان از همه برتر است. اگر سرزمین یمن را مطمئن یافتی [که به مقصود رسیدهای] وگر نه ره ریگزارها و درهها را پیش میگیری و از شهری به شهری میروی، تا ببینی که کار مردم به کجا میکشد و خداوند میان تو و میان مردمان تبهکار داوری فرماید. سپس امام حسین(ع) فرمود: برادرم، به خدا سوگند، که اگر در همه دنیا، پناهگاه و جایی امن نیابم هرگز با یزید بن معاویه بیعت نخواهم کرد.