You can do this using the ListBox.ItemContainerStyle property. Very nice explanation of this can be found here. Based on that example, we can set the ItemContainterStyle to have a transparent background color and then wrap the ListBox in a Border (the ListBox doesn't display its background color).
<Border Background="Green">
<ListBox Background="Red">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="Transparent"/>
</Style>
</ListBox.ItemContainerStyle>
<TextBlock Text="Hello" />
<TextBlock Text="Goodbye" />
</ListBox>
</Border>
If you just want to set the actual items you can set the Background to an actual color and then skip the border.