Doing this in CSS requires a bit of a hack, but it can be done. You are going to have to do a bit of math, and find how to correctly time the animation:
div {
  width: 300px;
  height: 300px;
  animation: anim 300s infinite;
  background: brown;
}
@keyframes anim {
  0% {
    background: red;
  }
  0.33% {
    background: blue;
  }
  100% {
    background: blue;
  }
}
JSFiddle demo
The one problem with this is that it is harder to change the timing. With the current setting, the red - blue transition takes 1 second, like you had in your JSFiddle.
How you calculate it is simple:
100 / #_seconds = percentage in animation for 1 sec e.g. 100 / 300 = 0.33
You can read more about this at this site:
http://samuelmichaud.fr/2013/web-design/add-a-delay-between-repeated-css3-animations/