diff --git a/src/zc/buildout/buildout.py b/src/zc/buildout/buildout.py
index c967249309e8a115ed2bb48e830f8f589a759d25..008048c057e3b4a41da4dbd2115deadfc9099dab 100644
--- a/src/zc/buildout/buildout.py
+++ b/src/zc/buildout/buildout.py
@@ -2241,7 +2241,10 @@ def _update(d1, d2):
         if section in d1:
             _update_section(d1[section], d2[section])
         else:
-            d1[section] = d2[section]
+            # In order to process += (and -=) correctly when
+            # <key> = <value> and <key> += <value> are in the same section
+            # _update_section must be called even when section is not in d1
+            d1[section] = _update_section({}, d2[section])
     return d1
 
 def _recipe(options):