Bring a large pot of lightly salted water to a boil. Add macaroni and cook for 8 to 10 minutes or until al dente; drain. Combine pasta, 1 beaten egg, 1/4 cup Parmesan and set aside.
To make the meat sauce: Drop the roma tomatoes in boiling water for about 45 seconds. Peel the skin off then seed and chop. Cook beef mince, onion and garlic together in a frypan until meat is brown and onion is tender. Drain off fat. Stir in fresh tomatoes, tomato sauce, chicken stock, vinegar, chilli powder, allspice, cinnamon and salt. Bring to boil; reduce heat and simmer uncovered for 15 to 20 minutes until thick. You don't want the sauce to be watery.
To make the white sauce: Melt margarine in a saucepan and stir in flour and pepper. Add the milk all at once. Cook and stir until smooth, thick and bubbly. In a bowl, combine about half of the mixture with 1 beaten egg. Return the egg mixture into the saucepan with the remaining white sauce. Stir in 1/4 cup Parmesan.
In a square glass baking dish, add 1/2 the pasta mixture. Next add all of the meat sauce. Then the remainder of the pasta and top with all of the white sauce. Sprinkle lightly with cinnamon, if desired.
Bake in preheated oven for 30 to 35 minutes. Let stand about 5 minutes before serving. The white sauce will firm when cooked.