A torque estimation error, which is an error between an estimated value and an actual value of the engine torque, is detected at first. Then, an error of a characteristic for engine frictional loss is learned based on the torque estimation error which is detected when ignition timing is around a most appropriate timing. An error of a characteristic for an ignition timing efficiency, which represents a relation between the ignition timing and an engine torque change, is further detected, based on the torque estimation error which is detected when ignition timing is delayed from the most appropriate timing. And the estimated value of the engine torque is corrected based on learning values for the errors of the engine frictional loss and the ignition timing efficiency.