俄军的作战计划是:进攻分为左右两个集团组成,东部兵团(左)甴西伯利亚第1、2、3军和西伯利亚骑兵师组成,司令是施塔格里堡中将,负责从右翼进行包抄,对日军右翼施加决定性的打击,从东南方横切,截断日军的朝鲜半岛补给线,并包抄日军侧后部。;西部兵团(右)甴第10、17军,西伯利亚第5军和乌苏里骑兵团、沿海龙骑兵团等组成,司令是比尔丹林上将,负责牵制日军左翼,吸引日军。另外由西伯利亚第4、6军、第1军乃扎巴伊卡尔骑兵师、科卡萨斯骑兵旅为预备队。而日军也同样分成东部和西部两个兵团应战。
10月11日,俄军东部兵团以西伯利亚第1、3军为两翼开始攻击日军驻守的本溪湖防线,守卫本溪湖的是梅泽道治少将指挥的近卫后备步兵旅团的8个大队(营),第12师团14连队(团)。结果日军己明显劣势的兵力守住了防线。双方激战了一天,日军各部均陷入苦战,有的用尽了预备队已无兵可调,有的则是损失极大,许多中队小队失去了全部军官,士兵伤亡极大,部分小队甚至全部阵亡。而俄军是进攻方,损失更大,仅西伯利亚第3军就伤亡了3000余人。
而负责牵制的俄军西部兵团却遭到日本的沉重打击,各路进攻的俄军均被日军击败,由其是在12日凌晨,日俄双方围绕着战场要点三块石山展开了激烈的争夺。三块石山位于北大山西面,是由三个大花岗岩组成兀在平野上的石头山,海拔114米,能够防止日军进入北大山,保护西部兵团的侧背面,从而维持东西兵团的连接,守卫三块石山的俄军有2个团和一个炮兵旅。
双方从凌晨1点开始战斗,一直打到了正午10点,日军投入了1个旅团的兵力,付出了1500余人的伤亡,终于攻下了三块石山。
不过尽管日本付出了惨痛的代价,但却一举获得了战场的主动,由于俄军东西兵团的连接被切断,造成了俄军的混乱,加上俄军的士气本来就不高,因此西部兵团的西伯利亚第4军和第10军率先撤退,造成了一个大空档,而东部兵团也只能被迫后撤,很快俄军就形成了全面退却。
但日军由于兵力不足,无法趁胜进军,扩大战果,只能被迫再次在既得阵地上转入防御,只能在局部重点地区发动进攻,10月15日夜间,日军奇袭攻占了俄军阵的制高点万宝山,形成了对俄军防御中心的威胁。俄军随后展开反击,经过了两日激战,俄军以伤亡3000人的代价,终于重新夺回了万宝山,保住了自己的阵地。然后双方都无力再战,各自巩固既得阵地,加修工事形成对峙。
沙河会战结束,俄军伤亡4万余人,其中战死5084人,失踪5868人;日军伤亡2万余人,其中战死4099人。日本虽未取得全胜,但伤亡只有俄军的一半,而且不仅守住了自己的阵地,同时将防线向前推进了一步,并为日本下一步进攻奉天创造了一个不错的局面。
总体来看,日军虽然没能攻克旅顺,但也彻底切断了旅顺对外的联系,只用一个军的兵力就能够困住旅顺城里的守军,并且只用少量军舰就将太平洋舰队的残余军舰完全封锁在港口里,将制海权基本完全让给了日本。而在北线,日军连续取得了辽阳会战,沙河会战的胜利之后,日本已经取得了极大的战略优势,俄军已被迫退守奉天,并以奉天为核心,组织防御,总体形势十分被动。
到这个时候,日本国内对战争的结果都十分乐观,认为俄国己没有抵抗之力,日本已是胜券在握了,更有报纸甚致预测,最早到今年年底,最迟到明年的2、3月份,就可以结束了。因此不少媒体开始渲染这是一场比日清战争更伟大的胜利,标志着日本进入世界一流强国的行列,还有报纸则开出了停战的条款,认为日本可以获得8--10优日元的赔