DC motors under powered when connected to arduino

I have two DC motors (spec sheet attached is for the motors) and when powered directly from the battery pack they move the car on their just fine. However when they're then put into the circuit with the Arduino they don't seem to have enough torque. I have attached a diagram of the circuit. The Ardiuno is running off of a 9V battery and the DC motors spec sheet is also attached.

I've been trying to fix this problem for a while now and cant seem to find a solution help would be greatly appreciated. :).

That's a wiring diagram, no way to tell if the transistors are correct from that.

If you are trying to use common-emitter mode (correct), then you must use base resistors
to protect the Arduino and transistor from burning out. 150 ohms is a good value.

If the motors take more than about 0.8A you cannot drive them this way using a BJT. A
logic-level MOSFET would be needed to handle the current.

Your specs say the motors are many amps, you definitely need logic-level MOSFET drive for
them, 0.01 ohms or less on-resistance.

Inductive loads like motors require a backwards diode across them to suppress inductive-kick-back voltage spikes (these easily fry components in the circuit if not handled).

You mention a 9V battery - small 9V smoke-alarm batteries are not suitable for driving motors,
they are very low current.

Motor full load current is 4.3 Amps? Which transistor are you using and where is the base resistor and kickback diode?