A bunch of invisible sprites all over the roads then set cars to move to those and turn towards those.
Every time it reaches one of those ( at an intersection for example ) make it choose another one that is straight, left or right and move toward that one.
Then each car can choose these. Avoiding car collisions will require more thinking, depends how far you are willing to go with it. May be faster to use timelines even if you have to do one for each car.
I am wrapping up a top down racing game, so I do not have to deal with intersections, but creating realistic car AI where cars moving at different speeds go around each other and behave realistically if they do crash into each other is not something you can do easily.