The main message
- Your hypothesis pertains to differences between two group means. The confidence intervals you mention pertain to the actual group means themselves.
- You probably want to estimate and report the confidence interval of the difference between group means rather than confidence intervals of the group means.
- When the 95% confidence interval of the difference between group means does not include zero, then your p-value should also be less than .05 (although exceptions could occur if you used a standard t-test for the significance test and bootstrapping for the confidence intervals). Thus, the tension you discuss between overlapping confidence intervals of individual group means and the significance test will be resolved.
Here's a little R simulation to demonstrate the idea.
First let us create some data for two groups, n=100 per group, drawn from a population with mean difference between groups of d=.35
> n <- 100
> g1 <- rnorm(n, mean = 0, sd = 1)
> g2 <- rnorm(n, mean = 0.35, sd = 1)
We can have a quick look at the group means and the difference between group means.
> # Group means
> round(mean(g1), 2)
> round(mean(g2), 2)
> round(mean(g2) - mean(g1), 2)
We can then have a look at the confidence intervals for the individual group means.
> round(as.numeric(t.test(g1, conf.level=.95)$conf.int), 2)
 -0.10 0.31
> round(as.numeric(t.test(g2, conf.level=.95)$conf.int), 2)
 0.26 0.66
See how the group means have overlapping confidence intervals (i.e., .31 is larger than .26).
However we can look at the confidence interval of interest; i.e., the confidence interval of the difference between group means.
> round(as.numeric(t.test(g2, g1, conf.level=.95)$conf.int), 2)
 0.07 0.64
It does not include zero.
We can now perform at t-test looking at differences between group means and see that the p-value is less than .05 consistent with the confidence interval of the difference between group means.
> t.test(g2, g1)
Welch Two Sample t-test
data: g2 and g1
t = 2.4506, df = 197.308, p-value = 0.01513
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
mean of x mean of y