diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index c06c5a121b0ffc1e40a9af08a0ee8bddf7b62e1e..1ba89d52190aee1bff4880dde38c145c2e69e7fa 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -416,7 +416,14 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
     QTC_ASSERT(!dir.isNull(), return);
 
     qbs::SetupProjectParameters params;
-    params.setBuildConfiguration(config);
+    QVariantMap baseConfig;
+    QVariantMap userConfig = config;
+    QString specialKey = QLatin1String(Constants::QBS_CONFIG_PROFILE_KEY);
+    baseConfig.insert(specialKey, userConfig.take(specialKey));
+    specialKey = QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY);
+    baseConfig.insert(specialKey, userConfig.take(specialKey));
+    params.setBuildConfiguration(baseConfig);
+    params.setOverriddenValues(userConfig);
     qbs::ErrorInfo err = params.expandBuildConfiguration(m_manager->settings());
     if (err.hasError()) {
         generateErrors(err);