If you use digital pins connected to 1A and 2A for directional control and put PWM on the enable pin you only need one PWM output per motor.
This is an example program for a motor control library that I wrote. As you will see it controls 2 motors with only 2 PWM outputs.
#include <bbMotor.h>
bbMotor leftMotor(6,8,7); //enable (PWM), InA, InB
bbMotor rightMotor(3,2,4); //enable (PWM), InA, InB
#define LOW_SPEED 10
#define HIGH_SPEED 50
#define FULL_SPEED 255
void setup()
{
leftMotor.begin();
rightMotor.begin();
delay(5000);
}
void loop()
{
accelerate(100);
delay(3000);
leftMotor.hardStop();
rightMotor.hardStop();
delay(3000);
}
void forwardBoth(int speed)
{
leftMotor.forward(speed);
rightMotor.forward(speed);
}
void spinLeft(int speed)
{
leftMotor.reverse(speed);
rightMotor.forward(speed);
}
void softStopBoth()
{
leftMotor.softStop();
rightMotor.softStop();
}
void accelerate(int targetSpeed)
{
for (int speed = 1;speed <targetSpeed;speed++)
{
leftMotor.forward(speed);
rightMotor.forward(speed);
delay(100);
}
}