Thinly slice the onions and reserve. Place the bacon in a large heavy saucepan and cook over a low heat, stirring, for 5 minutes or until the fat begins to run. Add the butter, olive oil, sliced onions, sugar and a pinch of salt and stir to mix. Cover and cook, stirring occasionally, for 15-20 minutes, or until the onions are golden brown.
Pour in the stock, add the tomatoes and season to taste. Cover and simmer, stirring occasionally, for 30 minutes.
Tear 8 of the basil leaves into pieces and stir into the soup, then taste and adjust seasoning, if necessary. Ladle the soup into warmed serving bowls, garnish with the remaining basil leaves and serve, handing the Parmesan around separately.