秦惠文王九年(公元前316年),
巴国和
蜀国互相攻打,都派遣使者来向
秦国告急求救。秦惠文王想出兵攻打蜀国,但顾虑道路险峻难行,并恐怕
韩国可能会前来侵犯,所以犹豫不决。
司马错与
张仪在秦惠文王面前争论不休,张仪主张应先攻打韩国,司马错力排张仪之议,认为攻打韩国将导致诸侯联合对抗秦国,攻打蜀国则既可得其人力、物力以充实军备,还可占据有利地势顺水而下攻打楚国。秦惠文王采纳司马错的建议,决定出兵攻打蜀国。同年秋天,司马错与
张仪、都尉墨等率军从
石牛道出兵攻打蜀国,与蜀国军队在
葭萌(今四川
广元)交战,蜀王兵败逃到
武阳(今
四川彭山东)。同年十月,秦军灭亡蜀国。
秦国将蜀王贬号为蜀侯,而任命
陈庄出任蜀国
相国。秦国吞并蜀国以后,更加富庶和强盛而轻视周围各国。
秦武王元年(公元前310年),因陈庄背叛秦国,司马错受命协助平定蜀地之乱,
甘茂诛杀陈庄。
秦昭襄王六年(公元前301年),蜀地郡守、蜀侯公子煇(秦公子,名煇,受封蜀侯,蜀地地方长官)在蜀地作乱,反叛秦国,司马错奉命讨伐叛军。司马错诛杀公子煇以及
郎中令等二十七人,蜀地之乱平定。
秦昭襄王十六年(公元前291年),司马错担任
左更,受命率军攻打魏国,夺取魏国的轵地(今河南济源南);攻打韩国,夺取韩国的邓地(今
河南邓州,一说今
湖北襄阳)。
秦昭襄王十八年(公元前289年),司马错担任
客卿,与
大良造白起率军攻打魏国的垣城和河雍二城,秦军拆断桥梁夺取二城。之后,秦军抵达轵地,夺取魏国大小城池六十一座。
秦昭襄王二十一年(公元前286年),司马错率军攻打魏国的
河内,秦军打败魏军,魏国献出安邑给秦国以求和,秦国将城内百姓驱赶回魏国。
秦昭襄王二十七年(公元前280年),司马错奉命调动
陇西军队,从蜀地进攻楚国的
黔中郡(今
湖南西部、
贵州东北部),秦军击败楚军,夺取楚国黔中郡,迫使楚国割让出
汉水以北和
上庸(今湖北西北部)之地给秦国。